如何在INSERT上获取下一个ID?

时间:2013-07-03 09:48:51

标签: sql-server-2008 sql-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'.

2 个答案:

答案 0 :(得分:9)

使用这样的嵌套查询:

INSERT INTO Anlagenteil (ID, TaId, Subtype, Name)
VALUES ((SELECT ISNULL(MAX(ID) + 1, 1) FROM Anlagenteil), 0, 'BdAnlageteil', 'Barcodeleser0');

答案 1 :(得分:1)

  

无效的列名称“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值。