Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie verwende ich die OUTPUT-Klausel einer INSERT-Anweisung, um den Identitätswert zu erhalten?

Sie können die neu eingefügte ID entweder so an die SSMS-Konsole ausgeben lassen:

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

Sie können dies auch von z.B. C#, wenn Sie die ID an Ihre aufrufende App zurückgeben müssen, führen Sie einfach die SQL-Abfrage mit .ExecuteScalar() aus (anstelle von .ExecuteNonQuery() ), um die resultierende ID zu lesen zurück.

Oder wenn Sie die neu eingefügte ID erfassen müssen Innerhalb von T-SQL (z. B. für die spätere Weiterverarbeitung) müssen Sie eine Tabellenvariable erstellen:

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

Auf diese Weise können Sie mehrere Werte in @OutputTbl einfügen und diese weiterverarbeiten. Sie können auch eine "normale" temporäre Tabelle verwenden (#temp ) oder sogar eine "echte" persistente Tabelle als Ihr "Ausgabeziel" hier.