Как получить следующий идентификатор при вставке?
Я хочу убедиться, что идентификатор столбца увеличивается для каждой вставки в таблицу.
Я попробовал это утверждение:
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')
И новое значение идентификатора будет добавлено автоматически.