小编use*_*701的帖子

带UPDLOCK的HOLDLOCK

它似乎使用HOLDLOCKUPDLOCK在事务中(例如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

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

sql-server ×1