Oracle11g Oracle DB触发器失败,然后使用相同的输入成功

Oracle11g Oracle DB触发器失败,然后使用相同的输入成功,oracle11g,database-trigger,Oracle11g,Database Trigger,在我的项目中,有一个从应用程序获取输入的DB触发器。应用程序填充一个表,触发器将表行作为输入,并填充另一个表作为输出。多年来,扳机一直表现良好 几个月前,触发器开始因大量输入而失败,这是一个普遍的例外。当手动尝试重新处理出错的输入时,它们会得到正确的处理。现在我编写了第二个触发器,它搜索出错的条目,并将它们的状态更新为“未处理”,原始触发器正确地处理它们 虽然它解决了这个问题,但我仍然无法理解为什么首先会发生第一个错误。如果这是一个触发问题,这个问题可以用相同的输入重现,但它不能。任何出错的输入

在我的项目中,有一个从应用程序获取输入的DB触发器。应用程序填充一个表,触发器将表行作为输入,并填充另一个表作为输出。多年来,扳机一直表现良好

几个月前,触发器开始因大量输入而失败,这是一个普遍的例外。当手动尝试重新处理出错的输入时,它们会得到正确的处理。现在我编写了第二个触发器,它搜索出错的条目,并将它们的状态更新为“未处理”,原始触发器正确地处理它们

虽然它解决了这个问题,但我仍然无法理解为什么首先会发生第一个错误。如果这是一个触发问题,这个问题可以用相同的输入重现,但它不能。任何出错的输入,当再次处理时,都会以优异的成绩通过


这里有什么问题?什么时候Oracle DB触发器会对输入引发常规异常,但不会对同一输入再次引发?

什么是“常规异常”?由于缺少数据而导致的异常会得到正确处理,因此在这种情况下,除此之外的任何异常都将是常规异常。有一个名为“STATUS”的列,其中可以包含值“PASS”、“IGNORED”、“E-NO DATA”和“E”,分别表示“成功执行”、“无效请求”、“由于缺少数据导致的异常”和“一般异常”。在这种情况下,出错的out ENTERED始终获得状态“E”。未处理的entried的状态为空。因此,我的变通触发器只会查找状态为“E”的条目,并将其设为null。