它似乎使用HOLDLOCK或UPDLOCK在事务中(例如T1),不会阻止来自另一个事务(比如T2)的读访问.
据我了解,在T1完成之前,HOLDLOCK将阻止T2更新/删除; 和a UPDLOCK将阻止T2的更新/删除/插入.在这两个T2中都将具有对这些记录的读访问权.
但是,HOLDLOCK, UPDLOCK即使是读取访问,也使用两个(如:)块T2.当我们同时使用它们时会发生什么?
感谢您的见解
这不是我所看到的:
例如:
在查询1中:
begin tran
select * from tblTest WITH (UPDLOCK, HOLDLOCK)
WAITFOR DELAY '00:00:10'
commit tran
Run Code Online (Sandbox Code Playgroud)
在查询2中:
select * from tblTest
Run Code Online (Sandbox Code Playgroud)
在查询1完成之前,查询2不会产生结果.
sql-server ×1