2011-01-06 2 views
11

У меня есть таблица с автоинкрементом ид, что я делаюSQL вставных идентичностей

INSERT INTO (...) SELECT ... FROM ... 

Есть ли способ для меня, чтобы получить список идентификаторов, которые были вставлены?

Я думал, что могу получить максимальный id перед вставкой, после чего, и если все, что находится между ними, является новым, но тогда, если строка будет вставлена ​​из другого места, я могу столкнуться с проблемами. Есть ли правильный способ сделать это?

Я использую SQL Server 2005

ответ

31

Используйте пункт output.

DECLARE @InsertedIDs table(ID int); 

INSERT INTO YourTable 
    OUTPUT INSERTED.ID 
     INTO @InsertedIDs 
    SELECT ... 
+0

Отлично! Хотите узнать, есть ли способы вернуть этот @InsertedIDs в C#? – Icerman

+0

потрясающий !!! это спасло меня от объявления курсора! – Alex

3

Создать table переменную и затем использовать предложение OUTPUT в переменную table.

OUTPUT inserted.NameOfYourColumnId INTO tableVariable

Тогда вы можете SELECT из вашей table переменной.

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