文档解释
ORA-39116: invalid trigger operation on mutating table string.string
Cause: A Data Pump load operation failed because a trigger attempted to fire on the table while it was mutating.
Action: Disable trigger(s) on the specified table. Also see ORA-004091.
ORA-39116:无效触发操作在变异表 string.string
这是一个Oracle数据库保护性错误,指出您试图在一个被定义为可变表的表上执行一个触发器操作。 正如手册中所指出的,触发器在本质上是一种差不多的逻辑程序,并且可以改变表中的数据 – 由于这些相互作用之间存在关联性,因此在可变表上执行这样的操作是不可以的。
官方解释
您试图在一个可变表上执行一个触发器操作,但这是不可行的。 触发器可以更改表中的数据,但是,由于触发器和可变表之间的关联性,两种操作之间不能相互作用。
常见案例
ORA-39116在复合插入前,在可变表上执行触发器操作时常常会出现。Due to the fact that Oracle protective restricts the execution of triggers, even when there is a composite的insert, this error will show.
一般处理方法及步骤
1.确保不在可变表上执行触发器操作。
2.使用常见表代替可变表,以避免ORA-39116错误。
3.为了获得优良的性能,在触发器执行过程中,可以使用延迟执行(Delayed Execution)。
4.将触发器操作移动到一个明智的位置(比如存储过程或视图中)。这样可以避免ORA-39116,同时保证触发器的可再次编译性。