Эта страница переведена машинным переводом. Читайте английский оригинал. 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 ;!