我想確保每個插入表的ID列增加。如何在INSERT中獲取下一個ID?
我想這樣的說法:
INSERT INTO Anlagenteil (ID, TaId, Subtype, Name)
VALUES (MAX(ID)+1, 0, 'BdAnlageteil', 'Barcodeleser0');
不幸的是我收到此錯誤信息:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'ID'.
我想確保每個插入表的ID列增加。如何在INSERT中獲取下一個ID?
我想這樣的說法:
INSERT INTO Anlagenteil (ID, TaId, Subtype, Name)
VALUES (MAX(ID)+1, 0, 'BdAnlageteil', 'Barcodeleser0');
不幸的是我收到此錯誤信息:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'ID'.
使用嵌套查詢是這樣的:
INSERT INTO Anlagenteil (ID, TaId, Subtype, Name)
VALUES ((SELECT ISNULL(MAX(ID) + 1, 1) FROM Anlagenteil), 0, 'BdAnlageteil', 'Barcodeleser0');
無效的列名稱ID 」。
這表明你根本沒有ID
列。
您應該將此列添加到表中,並將其設置爲自動遞增,而不是自己編寫邏輯來執行此操作。
由於@Damien_The_Unbeliever指出,如果2人同時運行腳本,這可能會導致問題。
ALTER TABLE Anlagenteil
ADD ID INT IDENTITY(1,1)
然後你的SQL語句可以只是:
INSERT INTO Anlagenteil (TaId, Subtype, Name)
VALUES (0, 'BdAnlageteil', 'Barcodeleser0')
,並會自動添加新的ID值。
ID絕對是一個有效的列名稱。 – BetaRide
如果您需要遞增值,通常使用內置功能會更好(在SQL Server中,這可能是['IDENTITY']](http://msdn.microsoft.com/zh-cn/library/ms186775 .aspx)列)。考慮如果兩個用戶同時運行相同的代碼,您的方法會發生什麼情況。 –