7

我想确保表中的每个插入都会增加 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'.
4

2 回答 2

14

像这样使用嵌套查询:

INSERT INTO Anlagenteil (ID, TaId, Subtype, Name)
VALUES ((SELECT ISNULL(MAX(ID) + 1, 1) FROM Anlagenteil), 0, 'BdAnlageteil', 'Barcodeleser0');
于 2013-07-03T09:50:29.943 回答
2

列名“ID”无效。

这表明您根本没有ID专栏。

您应该将此列添加到表中,并将其设置为自动递增,而不是自己编写逻辑来执行此操作。

正如@Damien_The_Unbeliever所指出的,如果两个人同时运行脚本,这可能会导致问题。

ALTER TABLE Anlagenteil
ADD ID INT IDENTITY(1,1)

那么你的 SQL 语句可以是:

INSERT INTO Anlagenteil (TaId, Subtype, Name)
VALUES                  (0, 'BdAnlageteil', 'Barcodeleser0')

并且会自动添加新的 ID 值。

于 2013-07-03T09:53:09.207 回答