【问题标题】:Oracle: disable trigger before InsertOracle:在插入之前禁用触发器
【发布时间】:2018-12-17 17:36:18
【问题描述】:

我正在尝试在 Oracle DBMS 上编写事务以进行“简单”插入。 在单个事务中,我希望禁用触发器进行插入重新启用触发器...我正在使用 C# 和Oracle Db Oracle 数据库 11g .....

有可能吗? 怎么样?

提前致谢

【问题讨论】:

  • 文档中有一节关于trigger enabling and disabling...
  • 谢谢亚历克斯!我的问题不正确......在同一个事务中我想禁用触发器,进行插入并重新启用触发器......它可能吗?我正在使用 C# 和 Oracle Db Oracle Database 11g .....
  • 禁用和启用触发器是 DDL,因此它们将隐式提交。禁用将提交已经发生的任何事情,启用将提交插入。如果这些组合操作是更大交易的一部分,那么您需要重新考虑这一点。这是您需要经常做的事情,您是否能够修改触发器?您也许可以use a context-level flag 来控制触发器的行为,而不必禁用它 - 这将影响所有其他会话,而不仅仅是您尝试执行的插入操作。
  • 是的,我需要经常这样做,我可以修改触发器 ....
  • 好的,那么我建议您使用client_info 或其他一些上下文项,在您执行插入之前从您的应用程序中设置,以控制触发器是否触发。如我链接到的答案所示。正如我所说,禁用触发器会影响每个人,以及在您可能不想的时候提交。

标签: oracle database-trigger


【解决方案1】:
alter trigger trigger1 disable;

【讨论】:

    【解决方案2】:
    ALTER TABLE evaluations DISABLE ALL TRIGGERS;
    ALTER TABLE evaluations ENABLE ALL TRIGGERS;
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关此代码为何和/或如何回答问题的额外上下文可提高其长期价值。
    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多