Neuen Wert der Identity-Spalte ermitteln

Frage:
Der neu erzeugte Wert einer Identity-Spalte soll ermittelt werden.

Lösung:
Dafür gibt es drei Vorgehensweisen, die kleine aber feine Unterschiede haben:

SELECT @@Identity liefert den letzten Identity-Wert eines Gültigkeitsbereichs
Beispiel:
Ein Insert in eine Tabelle ergibt den Identity-Wert 7. Durch den Insert wird ein Trigger aktiviert, der in einer anderen Tabelle ebenfalls einen Datensatz anlegt. Dort ergibt der Insert den Identity-Wert 20. In diesem Fall ist die Rückgabe per SELECT @@Identity gleich 20.

SELECT Current_Id FROM tabelle liefert den letzten Identity-Wert der angegebenen Tabelle.
Beispiel:
Benutzer A speichert einen neuen Datensatz und erzeugt dabei den Identity-Wert 8. Benutzer B speichert in der Zwischenzeit ebenfalls einen neuen Datensatz und erzeugt dabei den Identity-Wert 9. Beide Benutzer erhalten mit
SELECT Current_Id FROM tabelle den Wert 9.

SELECT Scope_Identity liefert den letzten Identity-Wert des aktuellen Gültigkeitsbereichs.
Beispiel:
Benutzer A speichert per
Gespeicherter Prozedur einen neuen Datensatz. Der neue Identity-Wert ist 8. Benutzer B speichert auch einen neuen Datensatz, der den Identity-Wert 9 ergibt. Mit SELECT Scope_Identity erhält Benutzer A den Wert 8, Benutzer B den Wert 9.

/* übernommen aus der Original sqlfaq.de */