SQL Server Identity Management: Auswahl der richtigen Funktion (@@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT(), OUTPUT)
Viele Datenbankanwendungen erfordern Zugriff auf die ID neu eingefügter Zeilen, insbesondere wenn es um Tabellen geht, die Identitätsspalten enthalten. SQL Server bietet mehrere Möglichkeiten, dies zu erreichen; Jede Methode hat spezifische Verwendungszwecke und potenzielle Nachteile.
@@IDENTITY: Sitzungsweiter Identitätsabruf
@@IDENTITY
ruft den letzten Identitätswert ab, der in der aktuellen Sitzung generiert wurde, unabhängig von der Tabelle oder dem Bereich. Vorsicht ist geboten: @@IDENTITY
kann Werte aus anderen Bereichen (z. B. einem Trigger) zurückgeben, was möglicherweise zu ungenauen Ergebnissen führt.
SCOPE_IDENTITY(): Bereichsspezifischer Identitätsabruf
SCOPE_IDENTITY()
bietet einen präziseren Ansatz und gibt den letzten Identitätswert zurück, der innerhalb der aktuellen Sitzung und des aktuellen Bereichs (normalerweise die aktuelle Datenbank) generiert wurde. Aufgrund seiner Zuverlässigkeit ist es für die meisten Szenarien die bevorzugte Methode. Der Umfang kann mithilfe der (n)
-Syntax.
IDENT_CURRENT(): Tabellenspezifischer Identitätsabruf
IDENT_CURRENT('tableName')
ruft den letzten für eine angegebene Tabelle generierten Identitätswert ab, unabhängig von der Sitzung oder dem Bereich. Dies ist hilfreich, wenn Sie auf Identitätswerte aus einer Tabelle zugreifen, die in der aktuellen Sitzung nicht geändert wurde, oder wenn @@IDENTITY
und SCOPE_IDENTITY()
ungeeignet sind.
OUTPUT-Klausel: Identitätsabruf auf Anweisungsebene
Die OUTPUT
-Klausel innerhalb einer INSERT
-Anweisung bietet eine direkte Möglichkeit, auf die IDs eingefügter Zeilen im Gültigkeitsbereich der Anweisung zuzugreifen. Im Gegensatz zu @@IDENTITY
werden bereichsübergreifende Probleme vermieden. Allerdings ist die Verwendung von Tabellenvariablen oder temporären Tabellen zum Speichern der Ausgabe erforderlich, was möglicherweise die Komplexität erhöht und die Leistung beeinträchtigt. Entscheidend ist, dass es sich um die einzige garantierte Methode zum Abrufen von Identitäten bei paralleler Ausführung handelt.
Die Auswahl der richtigen Methode zum Identitätsabruf hängt von den spezifischen Anwendungsanforderungen ab. Während SCOPE_IDENTITY()
im Allgemeinen empfohlen wird, bieten @@IDENTITY
, IDENT_CURRENT()
und die OUTPUT
-Klausel in bestimmten Kontexten wertvolle Alternativen.
Das obige ist der detaillierte Inhalt vonWie wählt man die richtige SQL Server-Identitätsabruffunktion aus: @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT() oder OUTPUT?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!