java中使用savepoint_事务中savepoint(保存点)的使用

savepoint概念:

首先要知道savepoint就是为回退做的,savepoint的个数没有限制,savepoint和虚拟机中快照类似. savepoint是事务中的一点。用于取消部分事务,当结束事务时,会自动的删除该事务中所定义的所有保存点。

当执行rollback时,通过指定保存点可以回退到指定的点。

回退事务的几个重要操作

1.设置保存点 savepoint a

2.取消保存点a之后事务 rollback to a

3.取消全部事务 rollback

注意:这个回退事务,必须是没有commit前使用的;

如果事务提交了,那么无论你刚才做了多少个保存点,都统统没有。 如果没有手动执行commit,而是exit退出会话了,那么会自动提交 。

开始实验:创建savepoint还原点

SQL> set time on

SQL> create table test(aa varchar(9));

Table created

SQL> insert into test values(1);

1 row inserted

SQL> savepoint a1;

Savepoint created

SQL> select * from test;

AA

---------

1

SQL> insert into test values(2);

1 row inserted

SQL> savepoint a2;

Savepoint created

SQL> select * from test;

AA

---------

1

2

SQL> insert into test values(3);

1 row inserted

SQL> savepoint a3;

Savepoint created

SQL> select * from test;

AA

---------

1

2

3

SQL> insert into test values(4);

1 row inserted

SQL> savepoint a4;

Savepoint created

SQL> select * from test;

AA

---------

1

2

3

上面设置了4个保存点。

现在首先从第4个保存点后回退到第三个保存点

SQL> rollback to a3;

Rollback complete

SQL> select * from test;

AA

---------

1

2

3

从第3个保存点回退到第一个保存点,直接跳过了第2个保存点。第二个保存点无效。

SQL> rollback to a1;

Rollback complete

SQL> select * from test;

AA

---------

1

SQL> rollback to a2;

rollback to a2

ORA-01086: savepoint 'A2' never established in this session or is invalid

rollback将所有保存点或未提交事务都回退。

SQL> rollback;

Rollback complete

SQL> select * from test;

AA

---------

SQL>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值