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_demoAFTER 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触发器有行触发器、字典触发器、登录触发器等几种类型,分别能应用于实现不同的任务,具体方法可以根据实际需求进行修改。