| 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) → 自律型トランザクション |