1、ora-04091: table is mutating,trigger/function may not see it
本表的trigger对本表操作时,会触发该异常。
【异常情景】:
为数据库表创建一行语句级trigger,每插入一条数据,更改本数据的某一字段值。
【异常原因】:
oracle是将insert及trigger作为一个事务处理,而oracle在默认情况下执行trigger时会锁死本表,不允许对本表操作。因此会抛出该异常。
【解决方法】:自治事务。
为trigger创建自治事务。如下:
create or replace trigger XXX
decalre
pragma autonomous_transaction --*****
begin
....
commit; --*****
end XXX;
2、若异常处理中使用了dbms_output包中的put_line()方法,默认是不显示的,需要手动开启。
set serveroutput on;