同时执行相互锁定资源的两个transaction 会导致死锁的发生(其中如果需要加入where语句,那么两个transaction 对同一个table的操作where条件要求一样 )。
以下,T1事务执行后锁定tab1 中的一行row10 (假设是一行),未提交,同时T2事务也锁定tab2中的一行row11,T1事务请求锁定tab2 中的row11 行 , T2事务请求锁定row10 行 ,T1, T2都出于等待状态 。
T1 事务:
create procedure aa
as
declare @val1 char(10)
declare @val2 char(10)
begin
update tab1 set column1 =@val1
update tab2 set column1 =@val2
end
T2 事务:
create procedure bb
as
declare @val1 char(10)
declare @val2 char(10)
begin
update tab2 set column1 =@val2
update tab1 set column1 =@val1
end
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/35489/viewspace-605231/ ,如需转载,请注明出处,否则将追究法律责任。