Ist die Ausführung der gespeicherten T-SQL-Prozedur "atomar"?
Nehmen wir an, ich habe eine einfache gespeicherte Prozedur, die so aussieht (Anmerkung: Dies ist nur ein Beispiel, keine praktische Prozedur):
CREATE PROCEDURE incrementCounter AS
DECLARE @current int
SET @current = (select CounterColumn from MyTable) + 1
UPDATE
MyTable
SET
CounterColumn = current
GO
Wir gehen davon aus, dass ich eine Tabelle mit dem Namen 'myTable' habe, die eine Zeile enthält, wobei die 'CounterColumn' unsere aktuelle Anzahl enthält.
Kann diese gespeicherte Prozedur mehrere Male gleichzeitig ausgeführt werden?
d.h. Ist das möglich
Ich rufe 'incrementCounter' zweimal auf. Aufruf A erreicht den Punkt, an dem die 'aktuelle' Variable gesetzt wird (sagen wir, es ist 5). Aufruf B erreicht den Punkt, an dem die 'aktuelle' Variable gesetzt wird (dies wäre auch 5). Anruf A beendet die Ausführung, dann Anruf B beendet. Am Ende sollte die Tabelle den Wert 6 enthalten, aber stattdessen 5 aufgrund der Überlappung der Ausführung