Oracle中触发器有几种,用法与SQL Server一样吗?谢谢

大哥,请教下,Oracle中触发器有几种,用法与SQL Server一样吗?谢谢
最新回答
薅藤已蔓蔆

2024-09-17 03:42:43

ORACLE触发器有以下两类:
1
语句级(Statement-level)触发器,在CREATE
TRIGGER语句中不包含FOR
EACH
ROW子句。语句级触发器对于触发事件只能触发一次,
而且不能访问受触发器影响的每一行的列值。一般用语句级触发器处理有关引起触发器触发的SQL语句的信息——例如,由谁来执行
2
行级(Row-level)触发器,在CREATE
TRIGGER语句中包含FOR
EACH
ROW子句。行级触发器可对受触发器影响的每一行触发,并且能
够访问原列值和通过SQL语句处理的新列值。行级触发器的典型应用是当需要知道行的列值时,执行一条事务规则。
SQL
Server支持两种类型的触发器:
AFTER
触发器和INSTEAD
OF
触发器。其中AFTER
类型触发器要求只有执行某一操作(INSERT
UPDATE
DELETE)
之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER
触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder
来完成此任务。
INSTEAD
OF
触发器表示并不执行其所定义的操作(INSERT、
UPDATE、
DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD
OF
触发器,也可以在视图上定义INSTEAD
OF
触发器,但对同一操作只能定义一个INSTEAD
OF
触发器。