如果触发失败,确保插入行

时间:2016-05-15 22:35:25

标签: oracle triggers

我在插入之前有 oracle 11G触发器并不重要;其中的行为不是必需的。另一方面,调用触发器的行正确插入表

非常重要

我希望知道是否有办法确保即使触发器失败也会在表中插入行?

我无法将触发器配置为后插入,因为它在插入之前已经级联连接到另一个触发器,必须首先触发

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

三种一般方法。

1)如果您不关心触发器执行的操作是否成功,那么您首先不需要触发器。如果触发器永远不会运行会出现问题,那么你确实关心触发器是否成功,你应该注意它是否正确编码,如果偶尔出现问题,你应该接受它。

2)让触发器引发异步操作,该操作可以与触发操作分开地成功或失败。这可能意味着您的触发器使用在触发事务提交后运行的dbms_job提交作业,这可能意味着触发器将行写入单独的表/ AQ,单独的进程从中读取并执行某些操作。当异步进程失败时,可以在触发进程仍在运行时单独调试。

3)向触发器添加一个when others异常处理程序,该异常处理程序执行一些有用的操作来记录异常,并提醒用户没有失败的错误。不幸的是,这种方法常常会在一个没有人读过的表中写一行,所以没有人知道操作失败了。如果没有人知道操作失败,没有人知道它需要修复,你基本上回到了你在选项1中所处的状态,你真的应该删除代码。