Firebird Documentation IndexFirebird 2.5 リリースノート手続き型SQL(PSQL) → 自律型トランザクション
Firebird Home Firebird Home Prev: 手続き型SQL(PSQL)Firebird Documentation IndexUp: 手続き型SQL(PSQL)Next: PSQLの変数にデータベースのカラムの型を借用

自律型トランザクション

Adriano dos Santos Fernandes

トラッカー・リファレンス CORE-1409

この新たな実装により、PSQLモジュール内の自律型トランザクションでコードの一部の実行ができるようになりました。これは、例外を発生させる必要があるけれどもデータベースの変更をロールバックしたくないという状況では便利です。

新しいトランザクションは、起動しているもののと同じ分離レベルで開始されます。自律型トランザクション内の文で発生した任意の例外は変更を引き起こし、ロールバッックされます。その文が終わりまで実行された場合はトランザクションはコミットされます。

Warning

自律型トランザクションは起動しているものから独立しているので、この機能は、デッドロックを避けるよう注意して使う必要があります。

構文パターン

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 ;!
    
Prev: 手続き型SQL(PSQL)Firebird Documentation IndexUp: 手続き型SQL(PSQL)Next: PSQLの変数にデータベースのカラムの型を借用
Firebird Documentation IndexFirebird 2.5 リリースノート手続き型SQL(PSQL) → 自律型トランザクション