Oracle系统触发器

DDL触发器详解

系统触发器是在进行数据库系统事件时进行触发,主要包括DDL语句,其语法格式如下:

create or replace trigger [schema.]trigger_name 

{before | after} 

{DDL_EVENT_LIST | database_event_list} 

on {database | [schema.]SCHEMA} 

[when_clause] 

trigger_body

其中:

DDL_EVENT_LIST表示一个或多个DDL事件,多个事件可以用or分开;database_event_list表示一个说多个数据库事件,多个事件中间用or分开;

database表示数据库级触发器;schema表示用户级触发器。

 

例如, 为了记载系统所发生的DDL事件(CREATE,ALTER,DROP),可以建立DDL触发器,为了记载DDL时间信息,应该建立专门的表,以便存放DDL事件信息。

--创建表以管理员方式登陆

 

CREATE TABLE event_ddl(

event VARCHAR2(20),

username VARCHAR2(10),

owner VARCHAR2(10),

obbjname VARCHAR2(20),

objtype VARCHAR2(10),

time DATE

);

 

在建立了表event_ddl之后,就可以在触发器中引用该表,为了记载DDL事件,应该建立DDL触发器,注意,当建立DDL触发器时,必须使用AFTER关键字。

CREATE OR REPLACE TRIGGER tr_ddl

AFTER DDL ON scott.schema

BEGIN

INSERT INTO event_ddl VALUES(

ora_sysevent,ora_login_user,ora_dict_obj_owner,ora_dict_obj_name,ora_obj_type,SYSTEM

);

END;

当建立了触发器tr_dll之后,如果在SCOTT方案对象上执行了DDL操作,则会将该新息记载到表event_ddl中。

 

转载于:https://my.oschina.net/u/2971691/blog/775771

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值