Oracle基础知识(八) - 触发器的分类:系统触发器

来源:互联网 发布:下载软件推荐 知乎 编辑:程序博客网 时间:2024/06/05 09:27

系统事件触发器是指基于Oracle系统事件(LOGIN登录 STARTUP启动)所建立的触发器,通过使用系统事件触发器,提供了跟踪系统或数据库变化的机制。

1. Oracle系统事件

以下介绍,摘自一篇文档,已上传至CSDN:http://download.csdn.net/detail/jolingogo/6533513


        可以触发系统触发器的Oracle系统事件主要包括五大类,主要有Startup/Shutdown、Servererror、Logon/Logoff、DDL、DML,

下面给出系统事件的种类和事件出现的时机(前或后)

这五类系统事件触发时,各事件包含的属性如:

 在上面所列的属性中,除DML语句的列属性外,其余事件属性值可以通过调用ORACLE定义好的事件属性函数来读取,具体如表5-3所示。


2. 示例

用户登录时,创建触发器

create or replace trigger tri_ygy_demo_loginafter logon on databasebegin insert into t_ygy_demo_log(id , operation_name , create_time,remark)       values(s_ygy_demo_logid.nextval,'用户登录',sysdate,'ip地址:'||ora_client_ip_address);end;/

3. 常用事件属性函数

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_ower_list(ower_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):用于检测特定列是否被删除

ora_is_servererror(error_number):用于检测是否返回了特定Oracle错误。

ora_login_user:用于返回登录用户名

ora_sysevent :用于返回触发 触发器的系统时间名。


原创粉丝点击