oracle设定事务保存点,89.Oracle数据库SQL开发之 修改表内存——数据库事务的保存点...

89.Oracle数据库SQL开发之 修改表内存——保存点

事务中的任何地方都可以设置一个保存点,这样可以将修改回滚到保存点处。如果有一个很大的事务,这将非常有用,因为这样如果在保存点后进行了误操作,并不需要将整个事务一直回滚到最开头。

执行如下:

store@PDB1> select product_id,price from productswhere product_id in ( 4,5);

PRODUCT_ID  PRICE

---------- ----------

4     13.95

5     49.99

将产品4的价格增加20%

如下:

store@PDB1> UPDATE products set price=price*1.20where product_id=4;

1 row updated.

设置一个保存点,命名为save1

store@PDB1> savepoint save1;

Savepoint created.

然后运行DML语句都可以回滚到这一保存点,而对产品4做的修改会保留。

继续执行如下UPDATE

store@PDB1> update products set price = price*1.30where product_id=5;

1 row updated.

查询:

store@PDB1> select product_id,price from productswhere product_id in (4,5);

PRODUCT_ID  PRICE

---------- ----------

4     16.74

5     64.99

然后将这个事务回滚到刚才设置的保存点处:

store@PDB1> rollback to savepoint save1;

Rollback complete.

继续查询如下:

store@PDB1> select product_id,price from productswhere product_id in ( 4,5 );

PRODUCT_ID  PRICE

---------- ----------

4     16.74

5     49.99

然后执行ROLLBACK语句取消整个事务:

store@PDB1> ROLLBACK;

Rollback complete.

继续查询如下:

store@PDB1> select product_id,price from productswhere product_id in ( 4,5 );

PRODUCT_ID  PRICE

---------- ----------

4     13.95

5     49.99

全部都回滚了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值