11.1.3 触发器的类型
触发器可分为5种类型,具体内容如下:
❑数据操纵语言(DML)触发器。此种类型触发器定义到表上,当对表执行INSERT、UPDATE、DELETE操作时可以激发该类型的触发器。利用该类触发器可以复制、检查、替换某种符合指定条件的数据。按照触发级别可以分为两种方式,第一种为行级触发器,此种类型表示每条记录修改时都会激发该触发器;第二种为语句级触发器,此种类型表示当SQL语句执行时会激发该触发器,与修改多少条记录没有关系。如果以数据的更改事件为准,则分为BEFORE和AFTER两种类型。
❑数据定义语言(DDL)触发器。当CREATE、ALTER、DROP模式对象时会触发相关的触发器,在Oracle中可以简单地理解一个用户就有一个和它同名的模式,利用它可以使得某些表不能被修改或删除。
❑复合触发器。此种类型的触发器是Oracle 11g的新特性,它相当于在一个触发器中包含了4种类型的触发器,其中包含了BEFORE类型的语句级、BEFORE类型的行级、AFTER类型的语句级、AFTER类型的行级。这种把所有触发器都放到一个代码块中的做法使得变量的传递变得更加方便。
❑INSTEAD OF触发器。此种类型触发器通常作用在视图上。对由多个源表的视图做DML操作通常是不被允许的,如果遇到这种情况就可以利用INSTEAD OF类型触发器解决问题。利用它可以把对视图的DML操作转换成对多个源表进行操作。
❑用户和系统事件触发器。作用在数据库上由数据库事件激发的触发器,如登录和注销事件的触发器。利用它可以记录数据库的登录情况。
本小节简单介绍了触发器的类型,也有些机构把DML和DDL类型的触发器直接分为行触发器、语句触发器、BEFORE触发器、AFTER触发器。