Oracle触发器的分类及其特性(oracle触发器类型)
Oracle触发器是基于表或者说它指定的SQL语句集而在特定数据库操作发生时被自动触发,执行特定SQL语句集。它可按照特定View和Table或在View或Table上执行不同操作来分类。
Oracle触发器可以按其何时被触发而分成两类:行级触发器和表级触发器。行级触发器在表操作(如:更新、删除、插入)时被触发,它具有更好的性能。表级触发器则在DDL语句执行时被触发。
行级触发器也可以根据表的操作类型被分为四种:BEFORE INSERT触发器,AFTER INSERT触发器,BEFORE DELETE触发器,AFTER DELETE触发器。它们的具体触发时间如下:
BEFORE INSERT:触发器会在INSERT语句执行前触发,并强制要求外部应用程序或者程序提供数据符合触发器定义的要求。
AFTER INSERT:触发器会在INSERT语句执行后触发,这时数据已在表中而不会影响INSERT语句的处理,但可对对此插入的数据特殊处理。
BEFORE DELETE:触发器会在DELETE语句执行前触发,可以做一些特殊处理,或者拒绝执行本次DELETE语句。
AFTER DELETE:触发器会在DELETE语句执行后触发,可删除本条记录的相关信息,或删除其它不需要的记录,等等。
表级触发器分为BEFORE ALTER触发器,AFTER ALTER触发器,BEFORE DROP触发器,AFTER DROP触发器。它们的具体触发时机如下:
BEFORE ALTER:触发器会在ALTER语句执行前触发,可限制或禁止执行ALTER语句。
AFTER ALTER:触发器会在alTER语句执行后触发,可进行一些特殊处理,例如将ALTER语句记录到一个表,更新一个表等。
BEFORE DROP:触发器会在DROP语句执行前触发,可限制或禁止执行DROP语句,或者进行一些特殊处理,例如记录到指定表中。
AFTER DROP:触发器会在DROP语句执行后触发,可进行一些特殊处理,例如将DROP语句记录到一个表等。
Oracle触发器具有以下特点:
1、触发器可用于保护表,无论是对表进行读写,还是对它进行机构性更改,都会被内部的触发器来实施;
2、可使数据的更新符合要求,确保了插入和移除数据的有序性;
3、可实现记录更新以及单表操作时事件驱动;
4、可使数据库重构、模式变更之前,有规范程序运行;
5、触发器可以做限制操作, 如:仅当登记人数达到某一值,系统才允许登记新学员;
6、触发器可以使存储过程(Stored Procedure)触发;
7、触发器可执行其他语言块,例如:PL/SQL,java等,减少数据库的负担;
8、可实现一个复杂的应用,而不用创建众多的表和存储过程;
另外,Oracle中还有一种特殊的触发器叫做“System Trigger(系统触发器)”,它们由ORACLE库用户自动创建,用于捕获ORACLE服务器上次