2009年10月15日木曜日

PL/SQLで自律型トランザクションを使う

CREATE PROCEDURE hoge IS
BEGIN
 INSERT INTO yyy ・・・ ;
 hoge2();
 ROLLBACK;
END;
/

CREATE PROCEDURE hoge2 IS
 PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
 INSERT INTO xxx ・・・ ;
 COMMIT;
END;
/

yyyへのInsertはRollbackされるが
xxxへのInsertはCommitされる。

ロールバックをした際に取り消されたくない処理がある場合に
その処理を関数化した上で自律型トランザクションを使えばOK。

0 件のコメント:

コメントを投稿