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

Verwenden von OUTPUT nach INSERT, um den Wert der Identitätsspalte in eine Variable (kein Tabellenwert) zu bekommen

Denken Sie daran, dass der Wert der Ausgabeklausel darin besteht, dass sie mehr als einen Datensatz und mehr als ein Feld zurückgeben kann. Sie können also sowohl den natürlichen Schlüssel als auch die Identität für einen Datensatz ausgeben, sodass Sie auch die Mengenlehre verwenden können, um mehrere Datensätze in untergeordnete Tabellen einzufügen. Die Ausgabe ist sehr leistungsfähig und es lohnt sich, sich daran zu gewöhnen.

Es gibt derzeit einen Fehler in scope_identity() (siehe Link:http://connect.microsoft.com/SQLServer/feedback/details/328811/scope-identity-sometimes-returns-incorrect-value ), die Microsoft nicht zu beheben beabsichtigt. Das sollte Ihnen einen Hinweis darauf geben, ob Sie die Ausgabe für neue Entwicklungen verwenden sollten, auch wenn sie für einzelne Datensätze etwas klobiger ist.