回滚错误日志不起作用的原因?

Nar*_*iya 1 sql oracle plsql

我知道回滚不应该在错误日志上工作,但应该以合理的方式.让我考虑以下示例.

CREATE OR REPLACE procedure error_ins
AS
BEGIN
   INSERT INTO dummy VALUES(4) LOG ERRORS INTO ERROR_LOG_DMLEL;
   INSERT INTO dummy VALUES(2) LOG ERRORS INTO ERROR_LOG_DMLEL;
   INSERT INTO dummy VALUES(7) LOG ERRORS INTO ERROR_LOG_DMLEL;
   COMMIT;
   EXCEPTION
     WHEN OTHERS THEN
         ROLLBACK;
         dbms_output.put_line('error ocured');
END;
Run Code Online (Sandbox Code Playgroud)

这里,dummy当发生异常时,表的值将回滚到先前的状态,但ERROR_LOG_DMLEL表中记录的错误不会.

回滚对于错误日志不起作用是好的,但为什么它不起作用?

或者他们需要考虑的其他事情是什么?

我经历了几个文档,我找不到任何参考.

如果有人知道原因请回信.

谢谢.

小智 6

日志记录不是主要事务的一部分.有关详细说明,请参见此处:http://www.oracle-developer.net/display.php?id = 329.如果在主事务中发生了错误记录,并且事务失败,则会丢失错误日志,这不是您通常想要的.

在相关的说明中,这就是自定义日志记录例程使用的原因PRAGMA AUTONOMOUS TRANSACTION.