以下に示すように、私は、複数のユーザシステムおよびストアドプロシージャでの並列性を持っている: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などを有効にする必要がありますか?それは必要ですか?そして、第2の:それは本当にスレッドセーフであり、一意性を保証しますか?
元のリンクからの回答? – johnny
@Johnny:はい、他の質問に基づいて追加しました – gbn