У меня есть таблица, в которой есть столбец с именем «Is_Locked».
Я открываю 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 имеет значение false , тогда и запрос выполняется, и оператор Select не блокирует исключительно строки.
Почему?