1、 触发器类型
a) 行级触发器
对DML语句影响的每个行执行一次。最常用的一种,用户数据审计应用中。
create trigger for each row
b) 语句级触发器
对每个DML语句执行一次。创建触发器的默认类型,用于强制执行在一个表上的各种操作的安全措施。
c) 和AFTER触发器BEFORE
定义触发器的执行时机。定义触发器在DML语句之前或者之后执行。
d) 触发器INSTEAD OF
用于支持对象视图。
e) 模式触发器
阻止DDL操作以及在发生DDL操作时提供额外的安全监控。
f) 数据库级触发器
自动完成数据库维护或审计活动。
2、 触发器语法
CREATE
OR
REPLACE
TRIGGER
YANGYX
.
STUDENT_INFO_AFT_INS_ROW
BEFORE
INSERT
ON
YANGYX
.
STUDENT_INFO
REFERENCING
NEW
AS
NEW
OLD
AS
OLD
FOR
EACH
ROW
BEGIN
insert
into
class_info
(
class_id
,
class_name
)
values(:new.
student_id
,
'yangyx'
);
END
;
a) 各种DML触发器类型的组合使用
一个表上的多个insert、update和delete命令的触发器可以组合为单一的触发器,前提是它们都在同一级别上。
b) 触发器的用途
i. 设置插入值
在insert或者update操作中可以使用触发器设置列值。例如 :new.student_name := UPPER(:new.student_name);
ii. 维护复制的数据
复制表中的所有行或者部分行。
iii. 定制错误条件
iv. 调用过程
3、 启用和禁用触发器
触发器建立前的任何数据不受该触发器的影响。
alert trigger ×××× enable; ―――――――启用某个触发器
aleter trigger ×××× disable;―――――――禁用某个触发器
4、 删除触发器
drop trigger ××××;