Oracle自治事务的介绍

来源:互联网 发布:程序员刚入职 编辑:程序博客网 时间:2024/05/22 08:03

在你的一个事务(外层事务)中可以定义一个或几个自治事务。自治事务可以独立commit,不对外层事务产生影响,同样外层事务的 rollback 也对自治事务没有影响。通常可以考虑将自治事务定义成一个过程,在外层的事务中调用。

现在举个例子吧:以下procedure被一个无名块调用,

PROCEDURE write_log (

code IN INTEGER, text IN VARCHAR2)

IS

PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

INSERT INTO log VALUES (

code, text,

USER, SYSDATE

);

COMMIT;

END;

因为这个procedure的作用是写log,无论操作成功与否(即无名块是否执行rollback),log当然是都应该记录的啦。所以要把它写成自治事务,让这个procedure的提交独立于调用它的无名块,在rollback时也不会影响到log的记录。

原创粉丝点击