Heim >Datenbank >MySQL-Tutorial >Was ist der Unterschied zwischen „@@IDENTITY', „SCOPE_IDENTITY()', „IDENT_CURRENT()' und „IDENTITY()' in SQL Server?
SQL Server-Identitätsfunktionen: Ein detaillierter Vergleich
@@IDENTITY
, SCOPE_IDENTITY()
, IDENT_CURRENT()
und IDENTITY()
beziehen sich alle auf das Abrufen von Werten aus Identitätsspalten in SQL Server, unterscheiden sich jedoch erheblich in Umfang und Anwendung.
Grundlegendes zum Umfang in SQL Server-Identitätsfunktionen
„Bereich“ bezieht sich auf den Kontext, in dem der Identitätswert generiert wird. Dies kann sein:
Funktionsaufschlüsselung
@@IDENTITY
: Gibt den letzten Identitätswert zurück, der in der aktuellen Sitzung generiert wurde, unabhängig vom Bereich (Abfrage, gespeicherte Prozedur oder Trigger).
SCOPE_IDENTITY()
: Gibt den letzten Identitätswert zurück, der innerhalb der aktuellen Sitzung und des aktuellen Bereichs generiert wurde. Dies ist die am häufigsten empfohlene Funktion, da sie präzisere Ergebnisse liefert.
IDENT_CURRENT('table_name')
: Gibt den letzten Identitätswert zurück, der für eine spezifische Tabelle generiert wurde, unabhängig von der Sitzung oder dem Bereich. Dies ist nützlich, wenn Sie den letzten Identitätswert für eine bestimmte Tabelle über verschiedene Sitzungen oder Kontexte hinweg benötigen.
IDENTITY()
: Dies wird nicht zum Abrufen von Identitätswerten verwendet. Es handelt sich um ein Schlüsselwort, das zum Definieren einer Identitätsspalte beim Erstellen einer Tabelle mit der SELECT ... INTO
-Syntax verwendet wird.
Anschauliche Szenarien
Lassen Sie uns verschiedene Szenarien untersuchen, um die Unterschiede hervorzuheben:
Einzelne INSERT
-Anweisung: Wenn eine einzelne INSERT
-Anweisung eine Zeile hinzufügt, geben SCOPE_IDENTITY()
und @@IDENTITY
denselben Wert zurück.
Triggerbasiertes Einfügen: Wenn ein Trigger nach einem INSERT
in die erste Tabelle eine Zeile in eine zweite Tabelle einfügt, gibt SCOPE_IDENTITY()
die Identität aus der Tabelle zurück, die direkt von der aktuellen Anweisung betroffen ist (die erste Tabelle), während @@IDENTITY
die Identität der zuletzt in der Sitzung betroffenen Tabelle zurückgibt (die möglicherweise die zweite Tabelle ist).
Die richtige Funktion wählen
In den meisten Fällen wird SCOPE_IDENTITY()
bevorzugt, da es kontextspezifische Ergebnisse liefert. @@IDENTITY
ist hilfreich, wenn Sie den aktuellsten Identitätswert benötigen, unabhängig von seiner Herkunft innerhalb der Sitzung. IDENT_CURRENT()
ist entscheidend, wenn Sie unabhängig von der aktuellen Sitzung den letzten Identitätswert für eine bestimmte Tabelle benötigen. Denken Sie daran, dass IDENTITY()
zum Definieren von Identitätsspalten dient und nicht zum Abrufen ihrer Werte.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „@@IDENTITY', „SCOPE_IDENTITY()', „IDENT_CURRENT()' und „IDENTITY()' in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!