2011-01-10 5 views

Antwort

3

SCOPE_IDENTITY sollte verwendet werden. Wenn das INSERT einen Auslöser auslöst, der auch eine Identity-Einfügung durchführt, erhalten Sie den falschen Wert (d. H. Den vom Insert des Triggers generierten Wert) von @@ identity.

+0

+1 für den Trigger-Bit hinzuzufügen. –

4

Es ist normalerweise nicht so gut wie SCOPE_IDENTITY, wenn Ihre Version dies bietet, weil @@ Identität ist nicht auf den aktuellen Umfang beschränkt. Es wird die neueste Identität abrufen, auch wenn es von einer anderen SP in einer anderen Tabelle stammte.

Pinal Dave hat eine einfache Erklärung für die IDENTITY Angebote hier: http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/

1

@@ IDENTITY ist die letzte Identität Wert für einen Datensatz eingefügt. Wenn Sie hohe Benutzerkonkurrenzen erzielen, erhalten Sie den falschen Identitätswert, d. H. Sie erhalten einen Wert, den eine andere Anforderung gerade eingefügt hat.

Verwenden Sie für den letzten im aktuellen Bereich eingefügten Identitätswert SCOPE_IDENTITY.

0

Nur meine favoriate artilce auf dieser Option, wenn für nichts anderes als für den Titel „Identity Crisis

Verwandte Themen