插入独占锁定

我曾考虑过以下SQL语句:

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

udf_SomeFunc在表A上进行选择。据我所知,首先在A上设置一个共享锁(我现在正在讨论表A),然后,在释放该锁之后,获得排它锁以插入数据。 问题是:是否有可能,在当前事务在A上独占Lok之前,另一个事务将获得对表A的排他锁定?


食物的思想

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

正如你所看到的,第二次插入在第一次事务完成之前不会发生

现在拿出锁定提示和观察者的区别

链接地址: http://www.djcxy.com/p/32875.html

上一篇: insert exclusive locking

下一篇: How can foreign key constraints be temporarily disabled using T