PG transaction commit and rollback

            在PostgreSQL中,如果执行一个dml或ddl语句,默认一执行完就马上提交了,不能回滚,这样容易导致误操作的发生,避免这个风险的办法是关闭自动提交

1  设置\set AUTOCOMMIT off (ddl语句这里设置了之后一样会回滚,记住这里AUTOCOMMIT是大写)
2  闪回点策略,如下:

  begin;     -----这里的作用等同于\set AUTOCOMMIT off

  insert into tb01 values(1);

    savepoint sp1;

    insert into tb01 values(2);

    savepoint sp2;

    insert into tb01 values(3);

    如果直接执行 1)rollback(体现了事务的原子性,要么全回滚,要么全提交,即begin;开始的地方),那么所有数据都回滚 2)如果rollback to savepoint to sp1,那么此时则回滚点SP2则自动消失。 3)如果先回滚到SP2,那么可以继续回滚到SP1

The rollback point can be used to cut large transactions to avoid errors, and all operations are rolled back

Guess you like

Origin blog.51cto.com/2012ivan/2487715
Recommended