创建保存点

创建保存点

创建保存点

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命令后,保存点将被清除,此时不能回滚至原保存点

posted @ 2026-03-27 11:33  立勋  阅读(2)  评论(0)    收藏  举报