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

@@IDENTITY, SCOPE_IDENTITY(), OUTPUT und andere Methoden zum Abrufen der letzten Identität

Es hängt davon ab, was Sie versuchen zu tun ...

@@IDENTITÄT

Gibt den letzten IDENTITY-Wert zurück, der bei einer Verbindung erzeugt wurde, unabhängig von der Tabelle, die den Wert erzeugt hat, und unabhängig vom Gültigkeitsbereich der Anweisung, die den Wert erzeugt hat. @@IDENTITY gibt den letzten Identitätswert zurück, der in Ihrer aktuellen Sitzung in eine Tabelle eingegeben wurde. @@IDENTITY ist auf die aktuelle Sitzung und nicht auf den aktuellen Bereich beschränkt. Wenn Sie beispielsweise einen Trigger für eine Tabelle haben, der bewirkt, dass eine Identität in einer anderen Tabelle erstellt wird, erhalten Sie die Identität, die zuletzt erstellt wurde, selbst wenn es der Trigger war, der sie erstellt hat.

SCOPE_IDENTITY()

Gibt den letzten IDENTITY-Wert zurück, der für eine Verbindung und durch eine Anweisung im selben Gültigkeitsbereich erzeugt wurde, unabhängig von der Tabelle, die den Wert erzeugt hat. SCOPE_IDENTITY() ähnelt @@IDENTITY, begrenzt den Wert jedoch auch auf Ihren aktuellen Gültigkeitsbereich. Mit anderen Worten, es wird der letzte Identitätswert zurückgegeben, den Sie explizit erstellt haben, und nicht irgendeine Identität, die durch einen Trigger oder eine benutzerdefinierte Funktion erstellt wurde.

IDENT_CURRENT()

Gibt den letzten in einer Tabelle erzeugten IDENTITY-Wert zurück, unabhängig von der Verbindung und dem Gültigkeitsbereich der Anweisung, die den Wert erzeugt hat. IDENT_CURRENT ist auf eine bestimmte Tabelle beschränkt, jedoch nicht auf Verbindung oder Bereich.