掌握Oracle触发器类型,实现数据库智能控制(oracle触发器类型)
Oracle 触发器(Trigger)是在定义好特定条件后自动由 Oracle 数据库管理系统触发执行的 SQL 命令,该触发器运行在客户/服务器模式下,用于帮助数据库实现自动化管理,是实现数据库智能控制的重要手段。Oracle 中一共有三种触发器类型,分别是行触发器、表级触发器和系统触发器。
#### 一、行触发器
行触发器是针对表中行的变更所定义和被触发的操作,它主要处理执行DML命令,像:INSERT,UPDATE,DELETE等。行触发器又分为BEFORE和AFTER触发器,BEFORE触发器发生在事件之前,AFTER触发器发生在事件之后。例如使用如下代码创建一个行触发器:
CREATE OR REPLACE TRIGGER TR_BEFORE_ORDER_OPEN
-- 行触发器 BEFORE INSERT ON ORDERS
FOR EACH ROWBEGIN
:NEW.ORDER_STATUS := 'NEW';END TR_BEFORE_ORDER_OPEN;
上述表触发器的作用:在每一行新的插入操作之前,自动将ORDER_STATUS的状态设置为‘NEW’。
#### 二、表级触发器
表级触发器是运行在表上的触发器,无论是做了任何对该表的操作,表触发器都会被调用,也就是说只针对表(Table)而设置的动作进行触发,而不是某一行,它仅仅处理DDL命令,它可以在在数据库CREATE,ALTER,DROP命令发出后自动执行,例如使用如下代码创建一个表级触发器:
CREATE OR REPLACE TRIGGER TR_AFTER_ORDERS_CHANGED
-- 表级触发器 AFTER CREATE OR DROP ON ORDERS
BEGIN INSERT INTO MONITOR_ORDERS
(MESSAGE, CREATE_TIME, ORDERS_NAME) VALUES
('ORDERS table is changed!', SYSDATE, :NEW.ORDERS_NAME);END TR_AFTER_ORDERS_CHANGED;
上述表级触发器的作用:当ORDERS表被创建或者删除时,将该操作的信息写入到MONITOR_ORDERS日志表。
#### 三、系统触发器
系统触发器可以监视数据库或者应用程序对对象及角色进行操作时触发,它是一种特殊的权限控制机制,可以检查这种操作是否与安全策略相一致。例如使用如下代码创建一个系统触发器:
CREATE OR REPLACE TRIGGER TR_AFTER_LOGIN_CHANGED
-- 系统触发器 AFTER LOGON ON DATABASE
BEGIN INSERT INTO MONITOR_LOGIN
(MESSAGE, LOGIN_TIME) VALUES
('User login!', SYSDATE);END TR_AFTER_LOGIN_CHANGED;
上述系统触发器的作用:当用户成功登录数据库时,将该操作的信息写入到MONITOR_LOGIN日志表,从而实现数据库智能控制。
通过Oracle触发器可以实现自动执行相关SQL语句,从而实现数据库智能管理,强化服务器安全性。Oracle触发器一共有三种类型,行触发器、表级触发器和系统触发器,掌握Oracle触发器的相关类型,可以有效的帮助实现数据库智能控制。