Oracle 触发器类型概念解析(oracle触发器类型)

Oracle 触发器是一种用于完成业务或数据的程序,使用触发器可以实现数据库表中或查询中的操作,维护数据库完整性、检测错误和执行有用的任务。在Oracle数据库中,触发器类型的概念分为几种。

1. 行触发器(Row Trigger)

行触发器是最常用的一种触发器,当应用程序对数据库表进行 Insert 、Update 、Delete 动作时会被触发,由此可以实现对某行数据操作前后的动作,完成某些任务。

例如,将一个列值(CurrentTime)设置为插入时的系统时间,只要在数据库表中插入一条新纪录,CurrentTime 就会被设置为当前时间:

“`SQL

CREATE OR REPLACE TRIGGER trigger_demo

BEFORE INSERT ON demo

FOR EACH ROW

BEGIN

:NEW.CurrentTime := SYSDATE;

END;

/


2. 字典触发器(Dictionary Trigger)
字典触发器有时也称为DDL触发器,它在表或数据字典发生DDL 操作时被触发,它能检测字典表以及每个表的结构,从而实现一系列的特征。
例如,可以通过字典触发器实现当创建/修改表时,将记录操作时间及用户名写入应用日志表:
```SQL
CREATE OR REPLACE TRIGGER trg_ddl_demo
AFTER CREATE ON DATABASE
BEGIN
INSERT INTO application_log (opt_type,ddl_sql, opt_time,opt_user) VALUES (‘DDL’,SQL_text,sysdate,user);

END;
/

3. 登录触发器(Logon Trigger)

登录触发器是一种特殊的触发器,它在用户登录数据库的时候被自动触发,它能够在用户登录数据库服务器之前,对用户的资源进行许可控制及登录安全验证。

例如,可以建立专门用于保存每次登录尝试的触发器:

“`SQL

CREATE OR REPLACE TRIGGER trg_login_demo

AFTER LOGON ON DATABASE

BEGIN

INSERT INTO application_log(login_time, login_user) VALUES (sysdate,user);

END;

/


综上,Oracle触发器有行触发器、字典触发器、登录触发器等几种类型,分别能应用于实现不同的任务,具体方法可以根据实际需求进行修改。

数据运维技术 » Oracle 触发器类型概念解析(oracle触发器类型)