我在插入之前有 oracle 11G触发器并不重要;其中的行为不是必需的。另一方面,调用触发器的行正确插入表
非常重要我希望知道是否有办法确保即使触发器失败也会在表中插入行?
我无法将触发器配置为后插入,因为它在插入之前已经级联连接到另一个触发器,必须首先触发
提前感谢您的帮助
答案 0 :(得分:1)
三种一般方法。
1)如果您不关心触发器执行的操作是否成功,那么您首先不需要触发器。如果触发器永远不会运行会出现问题,那么你确实关心触发器是否成功,你应该注意它是否正确编码,如果偶尔出现问题,你应该接受它。
2)让触发器引发异步操作,该操作可以与触发操作分开地成功或失败。这可能意味着您的触发器使用在触发事务提交后运行的dbms_job
提交作业,这可能意味着触发器将行写入单独的表/ AQ,单独的进程从中读取并执行某些操作。当异步进程失败时,可以在触发进程仍在运行时单独调试。
3)向触发器添加一个when others
异常处理程序,该异常处理程序执行一些有用的操作来记录异常,并提醒用户没有失败的错误。不幸的是,这种方法常常会在一个没有人读过的表中写一行,所以没有人知道操作失败了。如果没有人知道操作失败,没有人知道它需要修复,你基本上回到了你在选项1中所处的状态,你真的应该删除代码。