2011-01-10 4 views
3

Wenn ich @@IDENTITY in einer SQL sp verwenden würde, die auch einen Trigger aktiviert, würde es zu einem Race Condition führen?Führt @@ IDENTITY in einem SP mit Triggern zu einer Wettlaufsituation?

sagen, dass ich ein INSERT INTO TABLE_A durchführen, die dann ein INSERT INTO TABLE_B auslöst, im aktuellen Bereich verwende ich @@IDENTITY

Wurde ich immer die resultierende Identität aus dem Trigger (TABLE_B) oder wäre es, auf dem Faden zuerst fertig abhängen bekommen ?

Hinweis: Ich weiß über SCOPE_IDENTITY, diese Frage ist hypothetisch ....

+0

Der Trigger wird per Definition nach dem Einfügen ausgeführt. Ich denke nicht, dass sie vernünftig mit Gewinde versehen werden können. –

Antwort

2

Ich glaube, Sie werden immer die Identität von Tabelle B erhalten, weil Ihre Transaktion in Tabelle A nicht abgeschlossen betrachtet und begangen (und Ihr T-SQL darf nicht weitergeschaltet werden), bis sowohl die Einfügung als auch der Trigger abgeschlossen sind. Selbst wenn Sie einen AFTER-Trigger verwenden, warten Sie immer noch, bis der Trigger-Code abgeschlossen ist, bevor Sie zur nächsten Zeile gelangen und nach der @@ -Identität fragen.

+0

+1 Ja, Trigger sind synchron. –

Verwandte Themen