Как получить следующий идентификатор при вставке?

Я хочу убедиться, что идентификатор столбца увеличивается для каждой вставки в таблицу.

Я попробовал это утверждение:

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 ответа

Решение

Используйте вложенный запрос следующим образом:

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')

И новое значение идентификатора будет добавлено автоматически.

Другие вопросы по тегам