【发布时间】: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或其他一些上下文项,在您执行插入之前从您的应用程序中设置,以控制触发器是否触发。如我链接到的答案所示。正如我所说,禁用触发器会影响每个人,以及在您可能不想的时候提交。