Firebird 2.5: Transakcje autonomiczne
Funkcja:
Wykonuje fragment kodu w autonomicznej (niezależnej) transakcji. Jest to przydatne w przypadkach, gdy
chcesz zgłosić wyjątek, ale nie chcesz, aby zmiany w bazie danych zostały wycofane.
Jeśli wewnątrz bloku autonomicznej transakcji zostaną zgłoszone wyjątki, zmiany są
wycofywane. Jeśli blok wykona się do końca, transakcja jest zatwierdzana.
Nowa transakcja jest inicjowana z tym samym poziomem izolacji co istniejąca.
Należy jej używać ostrożnie, aby uniknąć zakleszczeń.
Autor:
Adriano dos Santos Fernandes
Składnia:
in autonomous transaction
do
Przykład:
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 ;!