Oracle数据库中的触发器类型介绍(oracle触发器类型)
Oracle数据库中的触发器类型介绍
Oracle数据库支持3种不同类型的触发器:Row触发器、Statement触发器和System触发器。每种类型又有其自身特性,下面我将对此做个介绍。
Row触发器
行触发器主要用于数据改变后的实时监控,Oracle系统通过触发器,会在指定表或视图中进行特定操作时被调用,可有效保证数据库中数据的一致性。举个例子,假设每一次插入一条学生信息时,都要同时在另一个表中插入一条记录表示该生的成绩,此时Row触发器就很有用,它可以监听表中每一条记录的改变或插入情况,并自动将学生信息添加到相应的表中,从而实现此功能。
Oracle数据库中的Row触发器,有两种类型:BEFORE TRIGGER和AFTER TRIGGER。BEFORE TRIGGER会在进行插入、更新或删除操作时被调用,可以用来检查改变是否符合要求;AFTER TRIGGER会在属性改变后被调用,主要用于更新其他表或视图中的信息。 例如:
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
— 定义触发器
DBMS_OUTPUT.PUT_LINE(‘成功新增了一条学生信息!’);
END;
Statement触发器
Statement触发器可以监听Statement的发布,也就是SQL语句执行时,会调用触发器。例如当每次删除一条学生记录时,Statement触发器可以同时将这条记录中学生信息从另一个表或视图中删除,从而实现某种功能。
CREATE OR REPLACE TRIGGER trigger_name
AFTER DELETE ON table_name
FOR EACH ROW
BEGIN
–定义触发器
DBMS_OUTPUT.PUT_LINE(‘成功删除了一条学生信息!’);
END;
System触发器
System触发器也是Oracle数据库中的一种,只不不过它主要针对的是系统事件,如系统建库、数据库内变量的改变等,Oracle支持的System触发器如下:
(1)Create Database Trigger:来定义每次32位或64位数据库建立后执行的脚本;
(2)Logon Trigger:当用户登陆数据库时,可以针对特定的应用程序、账户或用户执行特定动作,如建立用户自定义临时表;
(3)Shutdown Trigger:可以定义当一个帐户关闭时调用的事件;
(4)INSTEAD OF Trigger:触发器会在表或视图被更新时被调用;
(5)SERVERERROR Trigger:用来定义服务器事件时调用的代码;
总结
以上便是Oracle数据库中三种不同类型的触发器介绍-Row触发器、Statement触发器、System触发器,这些触发器可以有效保持数据库中数据的一致性,同时也可以用来将数据库和应用程序的功能耦合在一起,从而更高效地实现功能。