2011-01-06 8 views
11

ich eine Tabelle mit einem Autoinkrement-ID haben, dass ich einSQL Server Liste der Einsatz Identitäten

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

tue Gibt es eine Möglichkeit für mich, um die Liste der IDs zu erhalten, die eingeführt wurden?

Ich dachte, ich könnte die Max-ID vor dem Einfügen dann nach und vorausgesetzt, alles dazwischen ist neu, aber dann, wenn eine Zeile von woanders eingefügt wird, könnte ich in Probleme stoßen. Gibt es einen richtigen Weg, dies zu tun?

Ich bin mit SQL Server 2005

Antwort

31

Verwenden Sie die output Klausel.

DECLARE @InsertedIDs table(ID int); 

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

Großartig! Fragen Sie sich, ob es Möglichkeiten gibt, diese @InsertedIDs an C# zurückzugeben? – Icerman

+0

erstaunlich !!! Das hat mich davor bewahrt, einen Cursor zu deklarieren! – Alex

3

erstellen table Variable und dann die OUTPUT Klausel in die table Variable verwenden.

OUTPUT inserted.NameOfYourColumnId INTO tableVariable

Dann können Sie SELECT von Ihrem table variabel.

Verwandte Themen