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