|
Oracle 有 row-level 和 statement-level 的触发器,
SQL Server 只有 statement-level 的触发器。
Oracle row-level 触发器中可以用 :New 和 :Old 来引用
新 row 和旧 row中的字段, Oracle 的 statement-level触发器
不能引用新旧值。 SQL Serve中用 inserted, deleted
临时表来引用新的和旧的 rows.
想不出真正意义上的 row-level 触发器有什么应用不能
用 statement-level 的触发器 + inserted, deleted tables
来实现的。
Row-level 触发器看起来强大,实际上引出很多复杂的问题,
很容易造成 mutating table errors,到头来还得用
statement-level触发器来 work-around (actually 要用
两个statement-level 的触发器和一个Row-level 触发器来
做SQL Serve中一个触发器就能做到到的功能).
至少从本人的经验来看,多半的触发器都要用该work-around
来避免mutating table errors。
当然, Oracle 触发器有些方面功能更全面。
本人浅见:Oracle 的 触发器的设计有根本缺陷。不知各位
高手有何高见。
|
|