ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Savepoint release row locks

Savepoint release row locks

原创 Linux操作系统 作者:ylw66 时间:2009-11-24 09:48:30 0 删除 编辑

SQL> create table test(x int,y int) ;

表已创建。

 

SQL> insert into test values(1,1);

已创建 1 行。

 

SQL> insert into test values(2,2);

已创建 1 行。

 

SQL> insert into test values(3,3);

已创建 1 行。

 

SQL> commit;

提交完成。

 

SQL> savepoint update_1;

保存点已创建。

 

SQL> update test set y=1000 where x=1;

已更新 1 行。

 

SQL> savepoint update_2;

保存点已创建。

 

SQL> update test set y=2000 where x=2;

已更新 1 行。

 

session B更新x=3的行,没有影响

SQL> update test set y=3000 where x=3;

已更新 1 行。

 

session B更新x=1的这一行,需要等待

SQL> update test set y=3000 where x=1;

session在等待。。。

 

session A回滚到savepoint update_2

SQL> rollback to savepoint update_2;

回退已完成。

 

session B还是在等待

 

session A回滚到savepoint update_1

SQL> rollback to savepoint update_1;

回退已完成。

 

session B还是在等待

此时按道理row=1这行的资源已经被释放了,为什么session B还是等待

 

session C来修改x=1这行,发现更新成功

SQL>  update test set y=3333 where x=1;

已更新 1 行。

 

session A 执行rollback

session B更新成功

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22111412/viewspace-620364/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-29

  • 博文量
    57
  • 访问量
    94974