【问题标题】:Trigger not executing when a Batch Update runs批量更新运行时触发器未执行
【发布时间】:2011-01-23 16:56:56
【问题描述】:

我正在使用 VB.Net 2008 和 ADO.Net 对我们的 Oracle 数据库进行批量更新。 更新正在工作,但在更新行之前表上有一个触发器以强制执行成员的终止终止日期。 因此,如果我尝试将终止日期(通过批量更新)设置为 2010 年 1 月 31 日,但会员的索赔在 2010 年 2 月 2 日处理,触发器将强制终止日期为 2 -Feb-2010. 但是,当批处理更新运行时,触发器没有执行?

是否有任何 Oracle DB Admin 选项可以禁用批量更新触发器?

【问题讨论】:

  • 请贴出触发器的来源。在 SQL*Plus 中,您需要发出 SET LONG 40000,然后发出 SELECT TRIGGER_BODY FROM ALL_TRIGGERS WHERE TRIGGER_NAME = :my_trigger

标签: vb.net oracle ado.net triggers


【解决方案1】:

通过 SQL*Loader 的直接路径加载可以禁用和重新启用触发器,如 here 所述

批量更新有什么作用。也许如果它执行 DELETE+INSERT,而不是 UPDATE,则触发器不会触发。

【讨论】:

    【解决方案2】:

    alter trigger 命令可用于禁用触发器,

    ALTER TRIGGER trigger_name DISABLE
    

    这将显示所有触发器的启用/禁用状态,

    select trigger_name, status from user_triggers
    

    【讨论】:

    • 触发器已启用并正常工作,只是在运行批量更新时执行。
    猜你喜欢
    • 2015-11-26
    • 2013-12-11
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多