在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

回滚点可以运用于大事务切割,避免出错,所有操作都回滚