Oracle数据库触发器的种类概述(oracle触发器类型)
Oracle 数据库触发器是为了解决数据库表达形式逻辑的一种特殊的数据库对象。它可以在数据库表和视图上被创建、管理、存储和执行,能够侦测指定的行和列的操作来保证数据库安全,维护一致性,实现自动响应和改进性能。Oracle 数据库提供了不同种类的触发器,下面将介绍它们并展示相关代码。
Oracle 数据库触发器有三种:行级触发器、表级触发器和系统触发器。
行级触发器是在用户定义的SQL操作执行不同事件后被触发的触发器,用户在指定表中定义一个行级触发器,当用户针对该表中某一行执行某个SQL操作时,设定的行级触发器就会被触发。行级触发器代码如下所示:
CREATE OR REPLACE TRIGGER TRG_USER
BEFORE INSERT ON USERS
FOR EACH ROW
BEGIN
INSERT INTO USER_GROUPS VALUES
(:NEW.user_id, ‘ParkView_Users’);
END;
表级触发器是在用户执行数据库操作时,整个表在受到影响的情况下被触发的触发器。表级触发器代码如下所示:
CREATE OR REPLACE TRIGGER AUD_USERS_TB
AFTER INSERT OR UPDATE OR DELETE ON USERS
DECLARE
v_OPERATION VARCHAR2(20);
BEGIN
IF INSERTING THEN
v_OPERATION := ‘Insert’;
ELSIF UPDATING THEN
v_OPERATION := ‘Update’;
ELSIF DELETING THEN
v_OPERATION := ‘Delete’;
END IF;
INSERT INTO USERS_AUDIT VALUES
(v_OPERATION, SYSDATE);
END;
最后一类触发器叫作系统触发器,它们是针对数据库实例级别的全局操作被触发的触发器,能够监视和影响多个数据库表和视图。在系统触发器代码中,用户可以像下面这样定义不同操作被触发:
CREATE OR REPLACE TRIGGER AUD_SYS
AFTER STARTUP ON DATABASE
BEGIN
INSERT INTO EVENTS_AUDIT VALUES
(‘Database Start Up’, SYSDATE);
END;
总之,Oracle 数据库触发器是一种特殊的数据库对象,可以迅速地实现数据库表达形式逻辑,并能够保障数据安全性,实现自动响应和改进性能。Oracle 中的触发器分为行级触发器、表级触发器和系统触发器,这三类触发器各有特色,均可满足不同的用户需求。