Firebird 2.5: Autonomous Transactions
Chức năng:
Chạy một đoạn mã trong một giao dịch độc lập (autonomous). Nó hữu ích trong các trường hợp bạn
cần ném ra một ngoại lệ nhưng không muốn các thay đổi cơ sở dữ liệu bị roll-back.
Nếu các ngoại lệ được ném ra bên trong thân của một khối giao dịch độc lập, các thay đổi sẽ bị
roll-back. Nếu khối chạy đến cuối, giao dịch sẽ được commit.
Giao dịch mới được khởi tạo với cùng mức cô lập (isolation level) với giao dịch hiện tại.
Nên được sử dụng một cách thận trọng để tránh deadlock.
Tác giả:
Adriano dos Santos Fernandes
Cú pháp:
in autonomous transaction
do
Ví dụ:
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 ;!