目录
触发器的基本概念
作用对象
触发事件
触发条件
触发时间
触发级别或者触发频率
触发器的分类
DML 触发器
INSTEAD OF 触发器
系统触发器
Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645
触发器的基本概念
触发器本身是一段程序代码,类似于存储过程和函数,但是与存储过程和函数不同的是,存储过程和函数创建后保存在 Oracle 数据库中,
如果要执行需要用户调用才可以。触发器创建完成后,以独立的对象存储在 Oracle 数据库中,根据事先定义的触发事件来决定是否执行,
只要发生这些触发事件,触发器就会自动执行
另外,触发器不能接收参数
触发器通常由触发器头部和触发体两部分组成,可以具体细分为如下几方面。
作用对象
包括数据表、视图、数据库和模式
触发事件
指可以引起触发器执行的事件。
例如,DML语句中对数据表或者视图执行数据操作的 INSERT、UPDATE、DELETE语句;DDL语句中执行创建、修改或者删除的 CREATE、ALTER.DROP 语句以及数据库系统的事件,包括Oracle 系统启动或者退出、异常错误等
触发条件
由 WHEN 子句指定的一个逻辑表达式,当触发事件发生时,如果该逻辑表达式的值为 TRUE 时,触发器就会自动执行。
触发时间
指触发器指令执行是在触发事件发生之前,还是在触发事件发生之后。
触发级别或者触发频率
分为语句级和行级触发器。语句级触发器是默认的,指触发事件发生触发器只执行一次;行级触发器指触发事件每作用于一个记录,触发器就执行一次。
触发器的分类
根据触发器的使用范围不同,可以把触发器分为3种:DML触发器、INSTEAD OF 触发器和系统触发器
DML 触发器
在执行 DML 语句时触发,可以定义为 INSERT、UPDATE、DELETE 操作,也可以定义在操作之前或者之后触发,也可以指定为行级触发或者语句级触发。
INSTEAD OF 触发器
它也被称为替代触发器,它是 Oracle 专门为视图设计的一种触发器。在 Oracle 数据库中,一般不能直接对两个以上表建立的视图进行一般的触发器操作,如果必须修改,就使用替代触发器。
系统触发器
在 Oracle 数据库的系统事件发生时进行触发,例如系统启动或者退出、异常错误等,这种系统触发器称为数据库触发器:或者发生 DDL语句时触发,例如执行创建、修改或者除的 CREATEALTER、DROP 语句等,这种触发器称为模式触发器。