创建保存点
创建保存点
创建保存点
1)PG的自动提交默认是开启状态,ddl语句也可以回滚操作,这两点和oracle有区别。
2)事务的提交与回滚体现事务的原子性特征,事务语句要么提交,要么回滚;
3)事务执行过程中可以任意创建保存点,根据需要执行回滚操作,如果不指定保存点,回滚操作会回滚到事务起始点,即begin开始的地方;
4)执行回滚操作在比较大的事务中,可以把执行过程分为几个步骤,每个步骤执行完成后创建一个保存点,后续步骤执行失败时,可回滚到之前的保存点,而不必回滚整个事务。
步骤
1.指定事务起点,在执行数据库操作之前使用
begin;
2.执行数据库操作
3.事务较多时创建保存点,可以多次创建
savepoint savepoint1;
savepoint savepoint2;
4.需要回滚时,回滚到指定保存点
rollback to savepoint savepoint2;
注意:
1.begin后的所有操作在执行commit之前都不会保存,此时若直接退出数据库,库表将回到执行begin命令时的样子
2.在rollback至savepoint2后操作如果出错,后续的所有操作会报错,如下
ERROR: current transaction is aborted, commands ignored until end of transaction block
这时候需要再次rollback to savepoint2可以回滚至savepoint2。
3.执行commit命令后,保存点将被清除,此时不能回滚至原保存点

浙公网安备 33010602011771号