トップページ >  PL/SQL > トランザクション制御> PL/SQLでのトランザクション制御方法
初版2009/08/25: 最終更新日2009/08/25
11-1.  PL/SQLでのトランザクション制御方法
目次
PL/SQLでのトランザクション
暗黙的なロールバック
独立したトランザクション
PL/SQLでのトランザクション
PL/SQLでのトランザクション制御はSQLで行うトランザクションと大差はありません。
COMMIT文と、ROLLBACK文を記載すればコミット、ロールバック処理が行われます。
また、SAVEPOINT文で処理の一部分までロールバックする等の制御が出来ます。
暗黙的なロールバック
PL/SQLではINSERT文、UPDATE文、DELETE文の直前に暗黙的にセーブポイントが設定されます。
各文の実行が失敗した場合は、その文が暗黙的にロールバックされます。
独立したトランザクション
AUTONOMOUS_TRANSACTIONプラグマを利用すると、プログラムの呼び出し順に関係なく、
独立したトランザクションを持つ関数を作ることが出来ます。

例:このプロシージャーをコールする関数がロールバックしてもこのプロシージャはロールバックされません。
CREATE PROCEDURE lower_salary (emp_id NUMBER, amount NUMBER) AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
UPDATE employees SET salary = salary - amount WHERE employee_id = emp_id;
COMMIT;
END lower_salary;
PL/SQL