Firebird 2.5 : Transactions autonomes
Function:
Exécute un bloc de code dans une transaction autonome (indépendante). C’est utile dans les cas où vous
devez lever une exception mais ne souhaitez pas que les modifications de la base de données soient annulées.
Si des exceptions sont levées à l’intérieur du corps d’un bloc de transaction autonome, les modifications sont
annulées. Si le bloc s’exécute jusqu’à la fin, la transaction est validée.
La nouvelle transaction est initiée avec le même niveau d’isolation que celle existante.
Doit être utilisé avec prudence pour éviter les interblocages.
Auteur :
Adriano dos Santos Fernandes
Syntaxe :
in autonomous transaction
do
Exemple :
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 ;!