理论教育 Oracle数据库管理与开发:触发事件及时序

Oracle数据库管理与开发:触发事件及时序

时间:2023-10-30 理论教育 版权反馈
【摘要】:触发事件1)触发事件的概念触发器必须由事件才能触发。触发器的触发事件分可为3类,分别是DML事件、DDL事件和数据库事件。数据库事件需要是具体的,在创建触发器时要指明触发的事件。表12.3各类触发器的作用根据触发器的激活方式,Oracle数据库内的触发器可分为行级触发器和语句触发器。

Oracle数据库管理与开发:触发事件及时序

(1)触发事件

1)触发事件的概念

触发器必须由事件才能触发。触发器的触发事件分可为3类,分别是DML事件、DDL事件和数据库事件。数据库事件需要是具体的,在创建触发器时要指明触发的事件。每类事件包含若干个事件,见表12.2。

表12.2 触发器的种类及其含义

续表

2)触发器分类

根据触发事件及作用对象不同,触发器的类型可划分为4种:数据操纵语言触发器、替代触发器、数据定义语言触发器和数据库事件触发器,其中数据定义语言触发器和数据库事件触发器也可以统称为系统触发器。各类触发器的作用见表12.3。

表12.3 各类触发器的作用

根据触发器的激活方式,Oracle数据库内的触发器可分为行级触发器和语句触发器。

①行级触发器。一条触发语句可能影响表中多行,行级触发器在触发语句中每影响1行就激活1次。如果触发语句未影响表中的任何数据行,行级触发器就不会被激活。如果触发器内的代码需要使用触发语句提供的数据,或者需要使用触发语句所影响行的数据时,就需要使用行级触发器。例如,INSERT语句、UPDATE语句或DELETE语句在插入、修改、删除数据时,它们可能影响0行、1行或多行。如果触发器内的代码需要使用插入后的数据,修改前、后的数据,或者删除前的数据,就需要建立行级触发器。

②语句触发器。语句触发器在触发语句执行期间只激活1次,无论触发语句影响多少行数据。即使触发语句没影响到任何行,语句触发器也激活1次。例如,执行DELETE语句删除表内数据时,无论它实际删除多少行,即使没有数据被删除,语句触发器也激活1次。

(2)触发时序(www.daowen.com)

触发器的触发时序就是指在时间上,触发器代码的执行和触发操作、事件执行之间的先后关系。在Oracle数据库内,有些触发器可以选择其时序,如一般的语句触发器、行级触发器等,可指定它们是在触发操作之前还是之后执行,而数据库事件触发器(如实例的关闭、用户的注销等)则不能任意选择其时序,只能在之前或之后触发。

Oracle数据库表上的单个触发器又被称为简单触发器,在简单触发器内可以准确指定以下时间点:

①触发语句之前。

②触发语句之后。

③触发语句影响的每行之前。

④触发语句影响的每行之后。

Oracle数据库内还支持组合触发器,组合触发器可以在多个时间点激活,所以可以为其指定多种触发时序。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈