Trang này được dịch bằng máy. Đọc bản gốc tiếng Anh. English

Thư viện IBSurgeon

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 ;!