我有一個多用戶系統和存儲過程的併發性,如下圖所示:TSQL:存儲過程和ROWLOCK
CREATE PROCEDURE dbo.GetWorkitemID
AS
DECLARE @workitem int;
UPDATE workqueue
SET status = 'InProcess', @workitem = workitemid
WHERE workitemid = (SELECT TOP 1 workitemid
FROM workqueue WITH (ROWLOCK,UPDLOCK,READPAST)
WHERE status = 'New' ORDER BY workitemid)
SELECT @workitem
GO
它從「新」到「進程內」更新單個記錄狀態,返回記錄的ID。
問題如下:我應該在事務範圍中使用此存儲過程來啓用ROWLOCK,UPDLOCK等嗎?需要嗎?第二:它是否真的線程安全並保證唯一性?
你的原始答案由鏈接? – johnny
@Johnny:是的,但我根據你的其他問題添加了一些東西 – gbn