我知道回滚不应该在错误日志上工作,但应该以合理的方式.让我考虑以下示例.
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.