Heim > Datenbank > MySQL-Tutorial > Wie wählt man die richtige SQL Server-Identitätsabruffunktion aus: @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT() oder OUTPUT?

Wie wählt man die richtige SQL Server-Identitätsabruffunktion aus: @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT() oder OUTPUT?

DDD
Freigeben: 2025-01-23 09:07:09
Original
506 Leute haben es durchsucht

How to Choose the Right SQL Server Identity Retrieval Function: @@IDENTITY, SCOPE_IDENTITY(), IDENT_CURRENT(), or OUTPUT?

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.

weiter verfeinert werden

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage