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

Antworten auf die Frage(5)

Ihre Antwort auf die Frage