oracle利用触发器实现将ddl操作存入数据表中
先创建DDL数据库事件操作表:
create table ddl_event( sys_time date primary key, event_name varchar2(20), user_name varchar2(20), obj_type varchar2(20), obj_name varchar2(20))
然后建立触发器(系统事件触发器):
create or replace trigger tr_ddl after ddl on schema declare -- local... begin insert into ddl_event values(sysdate,ora_sysevent,ora_login_user,ora_dict_obj_type,ora_dict_obj_name); end
在oracle数据库中:
sysdate是date类型当前时间,systimestamp是timestamp类型的当前时间
ora_sysevent是系统事件,DDL事件,例如create,alter,drop这些操作
ora_login_user 是当前登录系统的用户
ora_dict_obj_type是操作的数据对象类型,例如表table,视图view,触发器trigger,存储过程procedure。
ora_dict_obj_name是操作数据对象的名称,例如表名,视图名,触发器名等等。