Firebird 2.5: Transacciones Autónomas
Función:
Ejecuta un fragmento de código en una transacción autónoma (independiente). Es útil en casos donde
necesita lanzar una excepción pero no desea que los cambios en la base de datos se reviertan.
Si se lanzan excepciones dentro del cuerpo de un bloque de transacción autónoma, los cambios se
revientan. Si el bloque se ejecuta hasta el final, la transacción se confirma.
La nueva transacción se inicia con el mismo nivel de aislamiento que la existente.
Debe usarse con precaución para evitar interbloqueos.
Autor:
Adriano dos Santos Fernandes
Sintaxis:
in autonomous transaction
do
Ejemplo:
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 ;!