Oracle触发器之旅:不同类型的触发器介绍
Oracle触发器是什么?它可以让我们实现什么功能?Oracle触发器具有不同的类型,那么我们来谈谈其中的不同类型。
对于Oracle触发器,常见的有三种类型:行触发器,表触发器和系统触发器。
行触发器是针对表中某行数据改变来进行响应,也叫做行级触发器,他们会在UPDATE、INSERT或DELETE这几种DML操作发生后被触发。其中UPDATE和INSERT又叫做行级的“增加”操作,DELETE称为行级的“减少”操作。下面的代码就是一个行级触发器,它会在表中每次更新时输出一行log:
CREATE OR REPLACE TRIGGER ROW_TRIGGER AFTER UPDATE ON SALES
FOR EACH ROW BEGIN
dbms_output.put_line('Row Updated!');END;
表触发器其实是一种针对表级操作的特殊触发器,表触发器可以在表上的任何操作(包括INSERT、UPDATE和DELETE)发生时被触发。表触发器对比行触发器更容易使用,通常用于实现某段逻辑作为整个表UPDATE语句的一部分执行。下面是一个表触发器的例子,它会在1和2表每次连接时输出一行log:
CREATE OR REPLACE TRIGGER TABLE_TRIGGER BEFORE INSERT ON 1
FOR EACH ROW BEGIN
IF INSERTING THEN dbms_output.put_line('1 and 2 Tables updated!');
END IF; END;
最后,系统触发器是专门针对系统表的触发器,他们可以用来记录元数据及其他数据,方便安全管理。下面就是一个系统触发器,它会在每次表被删除时输出一行log:
CREATE OR REPLACE TRIGGER BEFORE_TABLE_DELETE BEFORE DELETE ON ALL_TABLES
BEGIN dbms_output.put_line('Table deleted!');
END;
总之,我们可以看到Oracle触发器有3种不同的类型:行触发器,表触发器和系统触发器,它们都可以为应用程序增加一些安全性,实现规范的流程或者实现复杂的逻辑功能。熟练掌握这3种类型的触发器,以及相应的用法及编写方法,对提升数据库技术水平非常重要。