Heim > Datenbank > MySQL-Tutorial > Wie wähle ich zwischen @@IDENTITY, SCOPE_IDENTITY() und OUTPUT zum Abrufen von Primärschlüssel-Identitätswerten?

Wie wähle ich zwischen @@IDENTITY, SCOPE_IDENTITY() und OUTPUT zum Abrufen von Primärschlüssel-Identitätswerten?

Mary-Kate Olsen
Freigeben: 2025-01-03 04:12:38
Original
438 Leute haben es durchsucht

How to Choose Between @@IDENTITY, SCOPE_IDENTITY(), and OUTPUT for Retrieving Primary Key Identity Values?

Letzte Identität abrufen: @@IDENTITY, SCOPE_IDENTITY(), OUTPUT und mehr

Beim Abrufen von Primärschlüssel-Identitätsfeldwerten nach dem Einfügen verwenden Entwickler häufig verschiedene Methoden. Dieser Artikel befasst sich mit den Unterschieden und der Eignung der Methoden @@IDENTITY, SCOPE_IDENTITY() und OUTPUT.

@@IDENTITY vs. SCOPE_IDENTITY()

@@IDENTITY Gibt den letzten IDENTITY-Wert zurück, der für eine beliebige Tabelle generiert wurde, unabhängig vom Bereich. Es ist nicht bereichssicher, was bedeutet, dass es möglicherweise Identitäten von ausgelösten Einfügungen oder anderen Anweisungen innerhalb der aktuellen Sitzung zurückgibt.

SCOPE_IDENTITY() verhält sich ähnlich, beschränkt jedoch den zurückgegebenen Wert auf die aktuelle Anweisung und Anschlussumfang. Somit werden nur Identitäten abgerufen, die während der ausführenden Anweisung generiert wurden.

OUTPUT-Methode

Die OUTPUT-Klausel in der INSERT-Anweisung gibt eine Tabelle zurück, die die in die Tabelle eingefügten Daten enthält. Dazu gehören die generierten IDENTITY-Werte:

INSERT INTO #Testing (ID, somedate)
OUTPUT INSERTED.*
DEFAULT VALUES;
Nach dem Login kopieren

Methodenauswahl

Die geeignete Methode hängt von den spezifischen Anforderungen ab:

  • @@IDENTITY: Geeignet zum Abrufen der zuletzt generierten Identität für alle Tabellen innerhalb der aktuellen Sitzung.
  • SCOPE_IDENTITY(): Nützlich, wenn nur die Identität aus der aktuellen Anweisung und dem aktuellen Bereich benötigt wird.
  • OUTPUT: Ideal nicht nur zum Abrufen die Identität, aber auch andere eingefügte Werte.

Geltungsbereich Sicherheit

Die OUTPUT-Methode ist nicht explizit bereichssicher. Es ruft Identitäten ab, die im aktuellen Bereich generiert wurden. Wenn diese Identitäten jedoch anderen Tabellen zugewiesen wurden, werden sie möglicherweise auch zurückgegeben. Für strikte Bereichssicherheit verwenden Sie SCOPE_IDENTITY().

Zusätzliche Hinweise

  • IDENT_CURRENT(table): Gibt den zuletzt für eine bestimmte Tabelle generierten Identitätswert zurück. unabhängig von Verbindung oder Umfang. Es wird jedoch hauptsächlich in Legacy-Code verwendet.

Das obige ist der detaillierte Inhalt vonWie wähle ich zwischen @@IDENTITY, SCOPE_IDENTITY() und OUTPUT zum Abrufen von Primärschlüssel-Identitätswerten?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage