Firebird 2.5: Autonome transacties
Functie:
Voert een stuk code uit in een autonome (onafhankelijke) transactie. Dit is handig in gevallen waarin u
een uitzondering wilt opwerpen maar niet wilt dat de databasewijzigingen worden teruggedraaid.
Als er uitzonderingen worden opgeworpen binnen de body van een autonoom transactieblok, worden de wijzigingen
teruggedraaid. Als het blok tot het einde wordt uitgevoerd, wordt de transactie vastgelegd.
De nieuwe transactie wordt gestart met hetzelfde isolatieniveau als de bestaande transactie.
Moet met voorzichtigheid worden gebruikt om deadlocks te voorkomen.
Auteur:
Adriano dos Santos Fernandes
Syntax:
in autonomous transaction
do
Voorbeeld:
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 ;!