2009-11-16 109 views
3

触发器可以增强或阻碍性能的条件是什么?何时使用以及何时不使用系统中的触发器?触发器在oracle中

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

回答

7

执行触发器总是会有一些开销 - 至少,您正在为导致触发器触发的每一行执行从SQL引擎到PL/SQL引擎的上下文转换。尽管触发触发器的开销的绝对量是相对恒定的,但是根据你如何在做DML,开销的百分比是高度可变的。如果您的应用程序正在添加或修改集合中的行,这是对关系数据进行操作的最快方式,则触发器对性能的相对影响要大得多,因为这些上下文变化的成本加上实际触发器的成本这样做会很快控制执行触发DML的成本。

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