2011-09-30 57 views
1

所以我這兩個語句:ASP.NET的SQL Server插入錯誤

  string insertUserData = "INSERT INTO W711_User_Data(Network_ID, F_Name, M_Name, L_NAME, Badge, Telephone, Org_Code, Org_Name, Req_Head_Network_ID)Values(@networkID1, @firstName1, @middleName1, @lastName1, @badgeNumber1, @telephone1, @orgCode1, @orgName1, @myUserName1)"; 


     string insertReservationData = "INSERT INTO W711_Reservation_Data(ID, Network_ID, EventTitle, StartDate, EndDate, Justification) Values(null, @networkID2, @eventTitle1, @startDate1, @endDate1, @justification1)"; 

在第二串的網絡ID與第一表格網絡ID外鍵關係。

的問題是:當我運行在VS2010application,它給人的錯誤: 沒有可以進行身份​​column'W711_Reservation_Data'IDENTITY_INSERT設置爲OFF插入顯式值。

然後我讀做到這一點的地方:

SET IDENTITY_INSERT W711_Reservation_Data ON

但它也失敗,再次給出了同樣的錯誤! 請幫忙 謝謝 p.s. sql server

回答

1

如果您id是一個標識(也稱爲數據庫自動生成的),只是不要在INSERT語句中的任何位置列出ID字段,而不是列名稱而不是列表中的值:

獲取SQL生成的ID以這種方式調用SCOPE_IDENTITY的服務器:

INSERT INTO W711_Reservation_Data(Network_ID, EventTitle, StartDate, EndDate, Justification) Values(@networkID2, @eventTitle1, @startDate1, @endDate1, @justification1)"; 

RETURN SCOPE_IDENTITY() 

編輯:這是你的兩條語句中的第二條,我已經刪除了ID和NULL ...

+0

非常感謝這麼多隊友......這實際上工作!是的,ID是使用identity(1,1)生成的。我曾經在mysql項目中執行null技術,它工作。再次感謝! –

1

爲什麼你試圖插入null作爲ID列的值呢?假設這是IDENTITY列,它是投訴的來源則似乎更容易,你只是需要離開它的列列表和不傳遞任何明確的價值。即

INSERT INTO W711_Reservation_Data 
    (Network_ID, EventTitle, StartDate, EndDate, Justification) 
Values 
    (@networkID2, @eventTitle1, @startDate1, @endDate1, @justification1) 
+0

對不起,不好的練習習慣從MySQL有時候..現在工作謝謝 –

1

可能有兩種可能性。

1] 如果第一個表中的Network_ID是主鍵自動生成,則 將數據插入到第一個表中。 然後從該表中獲得最新的網絡ID,並且 將該網絡ID與第二查詢一起傳遞。

2]。 如果第二個表中的ID列是主鍵,則 不要在第二個查詢中傳遞null。 可以自動生成或在查詢中傳遞唯一值。