💽
SAVEPOINTでトランザクションをセーブする
SAVEPOINTとは
SAVEPOINTは、現在のトランザクション内に新しいセーブポイントを設定します。
セーブポイントとはトランザクション内に付ける特別な印です。セーブポイントを設定しておくと、それ以降に実行されたコマンドを全てロールバックし、トランザクションを設定時の状態に戻すことができます。
使い方
-- セーブポイントを定義する
savepoint (セーブポイント名);
-- 特定のSAVEPOINTに戻る
rollback to (セーブポイント名);
使用例
begin;
insert into table1 values(1);
savepoint sp1;
-- わざとエラーを起こす
error;
-- syntax error at near "error"
select * from table1;
-- current transaction is aborted, commands ignored until end of transaction
rollback to sp1;
select * from table1;
commit;
Discussion