在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
回滾點可以運用於大事務切割,避免出錯,所有操作都回滾