oracle 自治事务

自治事务可以提交或者回滚其修改而不影响调用它的事务,一般用在错误日志上。


创建日志表:

CREATE TABLE TB_LOG
(
       LOG_TIME TIMESTAMP NOT NULL   
);

创建主事务需要的表:

CREATE TABLE TB_MAIN (ID INTEGER PRIMARY KEY);

创建自治事务的存储过程:

CREATE OR REPLACE PROCEDURE AUTONOMOUS_INSERT AS
PRAGMA AUTONOMOUS_TRANSACTION;
LOG_TIME TIMESTAMP;
BEGIN
  SELECT SYSDATE INTO LOG_TIME FROM DUAL;
  INSERT INTO TB_LOG VALUES (LOG_TIME);
  COMMIT;
END;

用PRAGMA AUTONOMOUS_TRANSACTION来表明这个是自治事务。


主事务:

BEGIN
  INSERT INTO TB_MAIN VALUES (1);
  AUTONOMOUS_INSERT;
  ROLLBACK;
END;

执行主事务后SELECT,发现TB_MAIN里面没有数据,而TB_LOG里有数据。


你可能感兴趣的:(oracle 自治事务)