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