0
"Is_Locked"という名前の列を持つテーブルがあります。(XLock、RowLock)は行を排他的にロックしません
私は2 SSMSを開き、一人一人に、このスクリプトを使用して新しいクエリを作成:
BEGIN TRAN Nima1
BEGIN TRY
DECLARE @a INT
SELECT @a=COUNT(*)
FROM dbo.Siahe WITH(XLOCK,ROWLOCK)
WHERE TedadDaryaii=8
AND Is_Locked=1
IF @a = 0
BEGIN
UPDATE Siahe
SET Is_Locked = 1
WHERE ShMarja = 9999
END
COMMIT TRAN Nima1
END TRY
BEGIN CATCH
ROLLBACK TRAN Nima1
END CATCH
を除いてすべてIs_Lockフィールドは偽されている場合は、両方のクエリを実行し、SELECT文が独占的に行をロックしません。
なぜですか?