ITPub博客

首页 > 数据库 > Oracle > oracle DDl triggers 使用

oracle DDl triggers 使用

翻译 Oracle 作者:caisf 时间:2014-03-27 07:36:30 0 删除 编辑

我们在开发一个新项目时,一开始可能在设计数据库的时候会考虑不周,导致在后期开发的时候会增加表或给表增加字段,

如果没有及时记录下来,到最后我们自己也不知道增加了哪些表或哪些字段,oracle有一个功能能记录ddl操作,下面介绍过程:

第一步:创建表用来记录ddl操作
ad_finance.audit_ddl 表结构如下:

CREATE TABLE AUDIT_DDL (
d date,
OSUSER varchar2(255),
CURRENT_USER varchar2(255),
HOST varchar2(255),
TERMINAL varchar2(255),
owner varchar2(30),
type varchar2(30),
name varchar2(30),
sysevent varchar2(30));

第二步:sys用户下创建触发器脚本

CREATE OR REPLACE TRIGGER DDLTrigger
AFTER DDL ON DATABASE
BEGIN
if ora_dict_obj_type in ('PACKAGE', 'PACKAGE BODY','FUNCTION') then
null;
else

insert into ad_finance.audit_ddl
      (d,
       osuser,
       current_user,
       host,
       terminal,
       owner,
       type,
       name,
       sysevent)
    values
      (sysdate,
       sys_context('USERENV', 'OS_USER'),
       sys_context('USERENV', 'CURRENT_USER'),
       sys_context('USERENV', 'HOST'),
       sys_context('USERENV', 'TERMINAL'),
       ora_dict_obj_owner,
       ora_dict_obj_type,
       ora_dict_obj_name,
       ora_sysevent);
  end if;
end;

第三步:测试
create table cs(id number(10),sm varchar2(20)) ---增加表

alter table cs ----增加字段
add bh varchar2(10)

select * from ad_finance.audit_ddl ----有2条数据

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/20335129/viewspace-1130376/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2014-03-27

  • 博文量
    1
  • 访问量
    2389