文档解释
ORA-04094: table string.string is constraining, trigger may not modify it
Cause: A trigger attempted to modify a table that was constraining for some referential constraint of a parent SQL statement.
Action: None
Oracle ORA-04094: table string.string is constraining是一个错误信息,该错误指出一个触发器要求修改一个被约束的表,但这是不允许的。
官方解释
常见案例
1、触发器尝试更新一个在另一表中受外键约束的表。
2、触发器尝试修改一个在另一表中受引用完整性约束的表。
3、触发器尝试修改一个在另一表中受唯一性约束的表。
正常处理方法及步骤
1、如果受保护的表不需要被触发器修改,则可以简单地从触发器中删除更新语句。可以将触发器的功能转移到调用触发器的过程中。
2、如果受保护的表需要被触发器修改,则可以修改触发器,使其创建出临时表,把要更新的行存储在临时表中,然后在触发器存储过程中针对临时表执行所有更新。这将避免受约束的表被修改。
3、用户可以选择删除或修改受约束的表的任何外键约束、参照完整性约束或唯一性约束,以解决ORA-04094错误。但这一操作可能会降低数据库的完整性,用户必须考虑其后果。