0
我曾想過下面的SQL語句:插入獨佔鎖定
INSERT INTO A(a1, a2)
SELECT b1, udf_SomeFunc(b1)
FROM B
凡udf_SomeFunc做出選擇上表A根據我的理解,首先,共享鎖設置在A(我說的只是表A),然後,在釋放該鎖之後,獲得獨佔鎖以插入數據。問題是:是否有可能,在當前事務在A上獨佔Lok之前,另一個事務將獲得對錶A的排他鎖定?
我曾想過下面的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
,你可以看到第二插入不會發生,直到第一筆交易完成
現在拿出鎖定提示和觀察者的區別