SQL NOTE - SAVEPOINT

SAVEPOINT概述

SAVEPOINT与COMMIT、ROLLBACK同属于Transaction Control。
一个Transaction的描述默认从第一个DML语句开始。Transaction一直继续直到有COMMIT或者ROLLBACK声明出现。SAVEPOINT并不属于SQL标准里,它的作用仅仅是为了方便编程过程中快速方便的回到一些声明语句的位置,也就是起到了标记的作用。SAVEPOINT并不需要单独考虑,因为它并不会终止一个Transaction。

SAVEPOINT 语法

SAVEPOINT savepoint;

SAVEPOINT主要作用

在一个Transaction中标记Statement,以免需要ROLLBACK时回退全部的语句。通过使用SAVEPOINT,可以在ROLLBACK时会退到指定的SAVEPOINT位置,这个位置之前的Statement依然存在,同时所在的Transaction也依然存在,仍然处于uncommitted状态,对其他会话也依然可见。

SAVEPOINT使用注意

一个Transaction一旦 CO MMIT之后, CO MMIT之前的所有SAVEPOINT都将失效。换句话说,在 CO MMIT之后无法使用ROLLBACK回退到指定的SAVEPOINT位置,因为 CO MMIT之后已经无法找到之前的SAVEPOINT。

  1. SQL> create table product(pcode number(2),pname varchar2(10));

  2. Table created.

  3. SQL> insert into product values(1,'pen');

  4. 1 row created.

  5. SQL> insert into product values(2,'pencil');

  6. 1 row created.

  7. SQL> savepoint a;

  8. Savepoint created.

  9. SQL> update product set pcode=10 where pcode=1;

  10. 1 row updated.

  11. SQL> savepoint b;

  12. Savepoint created.

  13. SQL> delete from product where pcode=2;

  14. 1 row deleted.

  15. SQL> commit;

  16. Commit complete.
  17. SQL> delete from product where pcode=10;


  18. 1 row deleted.


  19. SQL> rollback to savepoint a;
  20.  rollback to savepoint a
  21. *
  22. ERROR at line 1:
  23. ORA-01086: savepoint 'A' never established in this session or is invalid

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

转载于:http://blog.itpub.net/30349018/viewspace-1849709/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值