首页 > 数据库 > Oracle > oracle DDl triggers 使用
我们在开发一个新项目时,一开始可能在设计数据库的时候会考虑不周,导致在后期开发的时候会增加表或给表增加字段,
如果没有及时记录下来,到最后我们自己也不知道增加了哪些表或哪些字段,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/ ,如需转载,请注明出处,否则将追究法律责任。