当前位置:文档之家› Oracle 用户事件触发器

Oracle 用户事件触发器

Oracle  用户事件触发器
Oracle  用户事件触发器

Oracle 用户事件触发器

用户事件触发器是建立在模式级的操作上的触发器。激活该类型触发器的用户事件包括:CREATE、ALTER、DROP、ANAL YZE、ASSOCIATE STATISTICS、DISASSOCIATE 、STA TISTICS、COMMENT、GRANT、REVOKE、RENAME、TRUNCA TE、LOGOFF、SUSPEND 和LOGON。

下面的示例将创建一个用户模式级触发器,以记录用户删除的数据库对象。

(1)以SCOTT身份连接到数据,并建立一个日志信息表。

SQL> create table droped_objects(

2 object_name varchar2(30),

3 object_type varchar2(30),

4 dropped_on date);

表已创建。

(2)创建用户事件触发器,以便记录用户删除的数据库对象。

SQL> create or replace trigger log_drop_trigger

2 before drop on scott.schema

3 begin

4 insert into droped_objects values(

5 ora_dict_obj_name,

6 ora_dict_obj_type,

7 sysdate);

8 end;

9 /

触发器已创建

在编写用户事件触发器时,经常会需要使用一些事件属性函数,例如,上面示例中的ORA_DICT_OBJ_NAME和ORA_DICT_OBJ_TYPE函数。常用的事件属性函数如表7-1所示。

表7-1 事件属性函数

事件属性函数说明

ora_client_ip_address 返回客户端的IP地址

ora_database_name 返回当前数据库名

ora_des_encrypted_password 返回DES加密后的用户口令

ora_dict_obj_name 返回DDL操作所对应的数据库对象名

ora_dict_obj_name_list(name_list out ora_name_list_t) 返回在事件中被修改的对象名列表

ora_dict_obj_owner 返回DDL操作所对应的对象的所有者名

ora_dict_obj_owner_list(owner_list out ora_name_list_t) 返回在事件中被修改的对象的所有者列表

ora_dict_obj_type 返回ddl操作所对应的数据库对象的类型

ora_grantee(user_list out ora_name_list_t) 返回授权事件的授权者

ora_instance_num 返回例程号

ora_is_alter_column(column_name in varchar2) 检测特定列是否被修改

ora_is_creating_nested_table 检测是否正在建立嵌套表

ora_is_drop_column(column_name in varchar2) 检测特定列是否被删除

相关主题
文本预览
相关文档 最新文档