博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle系统触发器
阅读量:6085 次
发布时间:2019-06-20

本文共 939 字,大约阅读时间需要 3 分钟。

hot3.png

是在进行数据库系统事件时进行触发,主要包括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

你可能感兴趣的文章
ubuntu18.04 and Linux mint 19安装virtualbox
查看>>
ElasticSeaarch 遇到的问题 (-)
查看>>
CMD中文乱码之另解决方案
查看>>
内存对齐
查看>>
工作周记 - 第六周 (2016/06/27 - 2016/07/01)
查看>>
我们为何要使用多线程,它有什么优点?
查看>>
OPNET统计结果的显示与分析
查看>>
树莓派3Braspberry pi 如何汉化显示中文教程
查看>>
Linux命令——rsync
查看>>
HTML基本结构和语法
查看>>
virtualbox+vagrant学习-4-Vagrantfile-5-Machine Settings
查看>>
Example of DenseCRF with non-RGB data
查看>>
C++ sort
查看>>
php中Redis配置小解
查看>>
cocos 自适应屏幕分辨率
查看>>
人月神话读后感(二)
查看>>
实验一 Java开发环境的熟悉
查看>>
(转) Oracle SQL优化必要的全表扫描思路分析
查看>>
iphone-common-codes-ccteam源代码 CCCommon.m
查看>>
What does the flowchart look like in top Journals?
查看>>