ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 模拟死锁 - 如何模拟update导致的死锁

模拟死锁 - 如何模拟update导致的死锁

原创 Linux操作系统 作者:tolywang 时间:2009-05-06 10:13:34 3 删除 编辑

同时执行相互锁定资源的两个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博客 ” ,链接:http://blog.itpub.net/35489/viewspace-605231/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13208460