Firebird 2.5: Transazioni Autonome
Funzione:
Esegue un blocco di codice in una transazione autonoma (indipendente). È utile nei casi in cui
è necessario sollevare un’eccezione ma non si desidera che le modifiche al database vengano annullate (rollback).
Se vengono sollevate eccezioni all’interno del corpo di un blocco di transazione autonoma, le modifiche vengono
annullate (rollback). Se il blocco viene eseguito fino alla fine, la transazione viene committata.
La nuova transazione viene avviata con lo stesso livello di isolamento di quella esistente.
Deve essere usata con cautela per evitare deadlock.
Autore:
Adriano dos Santos Fernandes
Sintassi:
in autonomous transaction
do
Esempio:
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 ;!