2013-07-03 2 views
4

Я хочу, чтобы колонка идентификатора была увеличена для каждой вставки таблицы.Как получить следующий ID на INSERT?

Я попытался это заявление:

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'. 
+3

Если вам нужно увеличивать значения, обычно лучше использовать встроенные функции (в SQL Server это будет ['IDENTITY'] (http://msdn.microsoft.com/en-us/library/ms186775 .aspx). Подумайте, что происходит с вашим подходом, если два пользователя одновременно запускают один и тот же код. –

ответ

8

Используйте Вложенный запрос, как это:

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

Неверное имя столбца «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 будет автоматически добавлен.

+1

Идентификатор определенно является допустимым именем столбца. – BetaRide

Смежные вопросы