插入独占锁定

时间:2010-05-27 20:48:38

标签: tsql

我考虑过以下SQL语句:

INSERT INTO A(a1, a2)
SELECT b1, udf_SomeFunc(b1)
FROM B

udf_SomeFunc在表A上进行选择。据我所知,首先,在A上设置共享锁(我现在只谈论表A),然后,在释放此锁之后,获得一个独占锁。插入数据。问题是:是否有可能,另一个事务将在表A上获得独占锁定,就在当前事务在A上独占lok之前?

1 个答案:

答案 0 :(得分:1)

思考的食物

create table test(id int)

insert test values(1)
GO

现在在一个窗口中运行此

begin tran


insert into test
select * from test with (holdlock, updlock)
waitfor delay '00:00:30'
commit

正在运行时打开另一个连接并执行此操作

begin tran

insert into test
select * from test with (holdlock, updlock)
commit

正如您所见,第二次插入在第一次交易完成之前不会发生

现在取出锁定提示并观察差异