【问题标题】:Triggers in oracleoracle中的触发器
【发布时间】:2010-12-17 02:56:10
【问题描述】:

触发器可以提高或阻碍性能的条件是什么?什么时候使用,什么时候不使用系统中的触发器?

如何使用触发器来施加复杂的约束?

【问题讨论】:

    标签: oracle triggers


    【解决方案1】:

    执行触发器总是有一些开销 - 至少,您正在对导致触发器触发的每一行从 SQL 引擎到 PL/SQL 引擎进行上下文转换。虽然触发触发器的开销的绝对量级相对恒定,但开销百分比的变化很大,具体取决于您执行 DML 的方式。如果您有一个应用程序在集合中添加或修改行,这是对关系数据进行操作的最快方式,那么触发器对性能的相对影响要大得多,因为这些上下文的成本加上触发器实际的成本做,很快就会支配做触发 DML 的成本。

    理论上,触发器可以用来强制执行复杂的约束,因为触发器可以查询其他表或调用函数来进行复杂的比较。然而,在实践中,即使不是不可能,也很难以在多用户环境中实际正确的方式对这些触发器进行编码,因此设计一个需要约束来查看数据的系统通常不是一个好主意。表。这通常表明数据模型存在问题。

    【讨论】:

      【解决方案2】:

      这是一个非常开放的问题(可能是家庭作业?)。 Oracle Concepts Guide section on triggers 是开始了解它们的好地方。

      【讨论】:

        【解决方案3】:

        只是一个指向 Tom Kyte 关于trigger vs declarative constraint 的有趣帖子的链接。

        【讨论】:

          猜你喜欢
          • 2015-06-30
          • 2011-05-11
          • 2014-06-28
          • 2021-04-29
          • 1970-01-01
          • 1970-01-01
          • 2017-07-20
          • 2013-02-09
          • 2012-02-08
          相关资源
          最近更新 更多