Firebird 2.5: 自律トランザクション
機能:
自律的(独立した)トランザクションでコードの一部を実行します。例外を発生させる必要があるが、データベースの変更をロールバックしたくない場合に便利です。
自律的トランザクションブロックの本体内部で例外が発生した場合、変更はロールバックされます。ブロックが最後まで実行された場合、トランザクションはコミットされます。
新しいトランザクションは、既存のトランザクションと同じ分離レベルで開始されます。
デッドロックを避けるために注意して使用する必要があります。
作成者:
Adriano dos Santos Fernandes
構文:
in autonomous transaction
do
例:
create table log (
“date” 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 (“date”, msg) values (current_timestamp, ‘Connection rejected’);
end
exception e_conn;
end
end!
set term ;!