深入浅出Oracle 触发器类型(oracle触发器类型)
Oracle 触发器类型深入浅出
Oracle触发器(Trigger)可以帮助用户在特定事件发生时对数据表或表视图中的数据执行自定义操作和数据处理操作。根据激发触发器的事件和场景,Oracle触发器分为几种不同的类型,具体如下:
1. DML触发器(Data Manipulation Language Trigger):DML 触发器的作用是在执行某些数据库操作时按指定的逻辑执行一些操作。如果在创建DML触发器时设置对表中的某列范围内的数据有效,则只有被此范围包括的数据发生变化才会触发此触发器。例如,如果要在向表t_user 中插入一条数据之后,改变其中user_name列的值,可以创建以下DML触发器实现:
Create Trigger change_user_name
After Insert on t_user
For Each Row
Begin
If :NEW.user_name :OLD.user_name
Then
Update t_user set user_name = :NEW.user_name
Where user_name = :OLD.user_name;
End if;
End;
2. 格式触发器(DDL Trigger):格式触发器可以监控或控制数据库结构操作,如建立或修改表、索引和存储过程等,这种触发器类型也叫DDL触发器(数据定义语句触发器)。例如,可以创建DDL触发器用以防止用户删除表:
Create Trigger add_table_log
After Drop on t_user
Begin
Insert into t_log(time, message) values (SYSDATE, ‘Table t_user was deleted by user ‘
|| USER);
End;
3. 服务器触发器(Server Trigger):服务器触发器是Oracle 提供的系统级触发器,用以在特定的数据库事件发生时执行一些特定的操作,例如在关闭数据库时执行一些清理操作。Oracle目前提供的几个服务器触发器:
① LOGON trigger: 在db发生连接登录时触发门
② LOGOFF trigger: 在db发生连接注销时触发门
③ STARTUP trigger: 在db启动时触发门
④ SHUTDOWN trigger: 在db关闭时触发门.
一般情况下,服务器触发器的触发只能通过系统权限进行调用,一般是SYS用户。如果要将服务器触发器触发授权给用户,可以使用grant命令进行授权,准确的授权命令如下:
Grant execute on sys.AQ$_QUEUES to username;
以上就是对Oracle触发器的主要类型介绍,Oracle触发器的使用可以帮助用户实现对数据库表内数据的快速自动处理,以提高运行效率和节省管理成本。