假设我有一个看起来像这样的简单存储过程(注意:这只是一个示例,不是实际过程):
CREATE PROCEDURE incrementCounter AS
DECLARE @current int
SET @current = (select CounterColumn from MyTable) + 1
UPDATE
MyTable
SET
CounterColumn = current
GO
我们假设我有一个名为“myTable”的表,其中包含一行,“CounterColumn”包含我们当前的计数。
这个存储过程可以同时执行多次吗?
即这可能吗:
我两次调用'incrementCounter'。调用 A 到达设置“当前”变量的位置(假设它是 5)。调用 B 到达设置“当前”变量(也为 5)的位置。调用 A 完成执行,然后调用 B 完成。最后,表应该包含值 6,但由于执行重叠,反而包含 5