Firebird 2.5: Transações Autônomas
Função:
Executa um trecho de código em uma transação autônoma (independente). É útil em casos onde você
precisa levantar uma exceção, mas não deseja que as alterações no banco de dados sejam revertidas.
Se exceções forem levantadas dentro do corpo de um bloco de transação autônoma, as alterações são
revertidas. Se o bloco for executado até o final, a transação é confirmada.
A nova transação é iniciada com o mesmo nível de isolamento da transação existente.
Deve ser usada com cautela para evitar deadlocks.
Autor:
Adriano dos Santos Fernandes
Sintaxe:
in autonomous transaction
do
Exemplo:
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 ;!