Oracle 提交(commit)与回滚(rollback)

 

  数据库每执行一个事务,都会有一个提交或者回滚的操作,所以对于commit与rollback的掌握也是很有必要的,掌握好了他们,可以让我们在编写程序过程的过程中,更加有效的编写程序,以实现自己的需求。下面是对他们的常用用法总结:

提交(commit)

  事务的提交指的是把你刚刚操作的数据真正的写入到数据库中,已提交的事务不能rollback。

  COMMIT; --提交所有事物

回滚点(Savepoint)

  用于回滚时,如果想要撤回刚刚的操作,可以在这些操作之前设置一个保存点,在需要撤回时使用rollback进行回滚。

  SAVEPOINT 保存点名称;

例:

BEGIN

  UPDATE table1 SET column1 = 'cs' WHERE 1 = 1;

  SAVEPOINT p1; --回滚点1

  DELETE FROM table1;

  --rollback to p1;--撤销删除事物
  ROLLBACK TO SAVEPOINT p1; --savepoint可省略

END;

回滚(rollback)

  事务回滚是指将该事务已经完成的对数据库的更新操作撤销。一般rollback后的work关键字隐藏着

语法:

ROLLBACK [ WORK ] [ TO [SAVEPOINT] savepoint_name  | FORCE 'string' ];

例:

  ROLLBACK to 保存点名称; --撤销单个事务

  ROLLBACK; --不加保存点名称则撤销所有存在的事物

  ROLLBACK force '11.23.43'; --强制回滚到由事务 ID '11.23.43'标识的事务。

自治事务(PRAGMA AUTONOMOUS_TRANSACTION)

  定义成自治事务的Procedure,实际上相当于一段独立运行的程序段,这段程序不依赖于主程序,也不干涉主程序,所以其有以下特点:

  1. 这段程序不依赖于原有Main程序,比如Main程序中有未提交的数据,那么在自治事务中是查找不到的。
  2. 在自治事务中,commit或者rollback只会提交或回滚当前自治事务中的DML,不会影响到Main程序中的DML。

例:

--MAIN_TRANSACTION
PROCEDURE proce1 IS
  ln_count NUMBER;
BEGIN

  ln_count := 1;

  UPDATE table1 SET column1 = ln_count WHERE 1 = 1;

  proce2;

  ROLLBACK; --最后更改结果table1表的column1值为2
END;

--AUTONOMOUS_TRANSACTION
PROCEDURE proce2 IS
  PRAGMA AUTONOMOUS_TRANSACTION;
  ln_count NUMBER;
BEGIN

  ln_count := 2;

  UPDATE table1 SET column1 = ln_count WHERE 1 = 1;

  COMMIT;
END;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琳妹妹的辉哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值