Цю сторінку перекладено машинним перекладом. Читайте англійський оригінал. English

Бібліотека IBSurgeon

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 ;!