Das Hinzufügen einer Zeile zu einer Tabelle mit einer automatisch inkrementierenden Spalte erfordert häufig das Abrufen der neu generierten ID. SQL Server bietet mehrere Möglichkeiten, dies zu erreichen, jede mit ihren eigenen Vor- und Nachteilen. Das Verständnis dieser Unterschiede ist der Schlüssel zur Auswahl der besten Methode für Ihre Situation.
Die Funktion @@IDENTITY
gibt den zuletzt generierten Identitätswert für alle Tabellen innerhalb der aktuellen Datenbanksitzung zurück. Dies ist praktisch, kann jedoch unzuverlässig sein, wenn in derselben Sitzung mehrere Einfügungen erfolgen, was möglicherweise zu falschen Ergebnissen führt.
SCOPE_IDENTITY()
ist präziser. Es gibt den letzten Identitätswert zurück, der innerhalb der aktuellen Sitzung und im Bereich generiert wurde (z. B. innerhalb einer gespeicherten Prozedur oder eines Stapels). Dies macht es im Allgemeinen zur sichersten und am meisten empfohlenen Option.
IDENT_CURRENT('tableName')
zielt direkt auf eine bestimmte Tabelle ab. Es ruft den letzten für diese Tabelle generierten Identitätswert ab, unabhängig von der Sitzung oder dem Bereich. Dies ist hilfreich, um die letzte einer Tabelle zugewiesene ID zu überprüfen, auch ohne eine aktuelle Einfügung.
Die INSERT
-Anweisung bietet in Kombination mit der OUTPUT
-Klausel eine leistungsstarke, direkte Methode. Damit können Sie alle von der Anweisung eingefügten Zeilen erfassen, einschließlich des Identitätswerts. Dieser Ansatz beschränkt sich auf die Aussage selbst und vermeidet mögliche Mehrdeutigkeiten. Beachten Sie, dass dies normalerweise das Einfügen in eine temporäre Tabelle oder Tabellenvariable erfordert, was die Komplexität etwas erhöht.
SCOPE_IDENTITY()
die bevorzugte Methode zum Erhalten des neu generierten Identitätswerts. Seine zielfernrohrspezifische Beschaffenheit gewährleistet Genauigkeit.@@IDENTITY
nur, wenn Sie den letzten Identitätswert über alle Bereiche hinweg benötigen und sich des Fehlerpotenzials bewusst sind.IDENT_CURRENT('tableName')
ist nützlich, um den letzten Identitätswert für eine bestimmte Tabelle abzurufen, unabhängig von der Sitzung oder dem Bereich.INSERT ... OUTPUT
-Ansatz bietet Effizienz und Umfangskontrolle, erfordert jedoch zusätzliche Einrichtung. Bedenken Sie die Vorteile gegenüber der zusätzlichen Komplexität.Das obige ist der detaillierte Inhalt vonWie rufe ich den Identitätswert einer eingefügten Zeile in SQL Server ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!