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

Was ist der Unterschied zwischen Scope_Identity(), Identity(), @@Identity und Ident_Current()?

  • Der @@identity Die Funktion gibt die letzte Identität zurück, die in derselben Sitzung erstellt wurde.
  • Die scope_identity() Die Funktion gibt die letzte Identität zurück, die in derselben Sitzung und im selben Bereich erstellt wurde.
  • Der ident_current(name) gibt die letzte Identität zurück, die für eine bestimmte Tabelle oder Ansicht in einer beliebigen Sitzung erstellt wurde.
  • Die identity() Die Funktion wird nicht verwendet, um eine Identität zu erhalten, sie wird verwendet, um eine Identität in einem select...into zu erstellen Abfrage.

Die Sitzung ist die Datenbankverbindung. Der Gültigkeitsbereich ist die aktuelle Abfrage oder die aktuelle gespeicherte Prozedur.

Eine Situation, in der scope_identity() und die @@identity Funktionen unterscheiden, ist, wenn Sie einen Trigger auf dem Tisch haben. Wenn Sie eine Abfrage haben, die einen Datensatz einfügt, wodurch der Trigger irgendwo einen weiteren Datensatz einfügt, wird scope_identity() Die Funktion gibt die von der Abfrage erstellte Identität zurück, während die @@identity Die Funktion gibt die vom Trigger erstellte Identität zurück.

Normalerweise würden Sie also scope_identity() verwenden Funktion.