2016-05-15 34 views
0

我有oracle 11G触发器之前插入这并不关键;其中的操作不是必需的。另一方面,称为触发器的行在表中正确插入非常重要确保行插入,如果触发失败

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

因为它在级联连接到插入之前另一个触发器,必须先开炮

在此先感谢您的帮助

+0

你的意思是“如果触发器产生错误”? –

+0

在触发器中捕捉异常并且不要再提起它。 – Mottor

回答

1

三种常用的方法我不能插入后配置触发的。

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

2)让触发器产生一个异步操作,它可以独立于触发操作成功或失败。这可能意味着您的触发器使用在触发事务提交后运行的dbms_job来提交作业,这可能意味着触发器将一行写入单独的表/ AQ,单独的进程会读取并执行某些操作。异步进程失败时,可以在触发进程仍在运行时单独进行调试。

3)添加when others异常处理程序,做的东西记录异常和警告人们,如果没有失败有一个错误有用的扳机。不幸的是,这种方法通常最终会在没有人读过的表上写一行,所以没有人知道操作失败。如果没有人知道操作失败,没有人知道它需要修复,并且基本上回到了选项1中的状态,您应该只删除代码。

+0

您好贾斯汀 你的反应是比我预期 我选择了第三个选项与日志在一个表中 即使这触发并不重要(更准确地说,调用需要触发行的插入)时,如果触发成功,则使用此数据库的第三个应用程序必须发送邮件并在监视屏幕上显示一些信息。如果不是这样,最终用户就知道了,他们会与我联系 非常感谢 – bonzaikarukera