Firebird Documentation Index → Firebird 2.5 リリースノート → 手続き型SQL(PSQL) → 自律型トランザクション |
トラッカー・リファレンス CORE-1409
この新たな実装により、PSQLモジュール内の自律型トランザクションでコードの一部の実行ができるようになりました。これは、例外を発生させる必要があるけれどもデータベースの変更をロールバックしたくないという状況では便利です。
新しいトランザクションは、起動しているもののと同じ分離レベルで開始されます。自律型トランザクション内の文で発生した任意の例外は変更を引き起こし、ロールバッックされます。その文が終わりまで実行された場合はトランザクションはコミットされます。
自律型トランザクションは起動しているものから独立しているので、この機能は、デッドロックを避けるよう注意して使う必要があります。
構文パターン
IN AUTONOMOUS TRANSACTION DO <単純な文 | 複合文>
使用例
create table log ( logdate timestamp, msg varchar(60) ); create exception e_conn 'Connection rejected'; set term !; create trigger t_conn on connect as begin if (current_user = 'BAD_USER') then begin in autonomous transaction do begin insert into log (logdate, msg) values (current_timestamp, 'Connection rejected'); end exception e_conn; end end! set term ;!
Firebird Documentation Index → Firebird 2.5 リリースノート → 手続き型SQL(PSQL) → 自律型トランザクション |