给指定的一批表自动加DML触发器(二)

2014-11-24 17:03:30 · 作者: · 浏览: 1
ASE;' || CHR(10) || 'END;';
execute immediate v_sql;
end loop;
nd;
其中SPLITSTR函数见本博客:http://www.2cto.com/database/201301/181638. html 中的(二、通用的分隔函数(VARCHAR2版本))
存储没做任何异常处理。(本人参考ITPUB上的NEWKID大大的说法,觉得异常还是留给应用处理好,所以就没做异常处理.)
四、执行存储自动给指定表增加触发器
[sql]
--开始批量增加触发器
begin
autocreate_trigger('EMP,DEPT,EMP_BAK');
end;
五、查询是否增加触发器成功并是否有效
[sql]
16:09:08 SCOTT@orcl> select A.NAME, A.TYPE, B.CREATED, B.LAST_DDL_TIME, B.status
16:09:18 2 from user_dependencies a, USER_OBJECTS B
16:09:18 3 where A.type = 'TRIGGER'
16:09:18 4 AND A.REFERENCED_TYPE = 'TABLE'
16:09:18 5 AND A.REFERENCED_NAME IN ('EMP', 'DEPT', 'EMP_BAK')
16:09:18 6 AND A.name = B.OBJECT_NAME;
NAME TYPE CREATED LAST_DDL_TIME STATUS
--------------- --------------- -------------- -------------- -------
TRI_EMP TRIGGER 08-4月 -13 08-4月 -13 VALID
TRI_DEPT TRIGGER 08-4月 -13 08-4月 -13 VALID
TRI_EMP_BAK TRIGGER 08-4月 -13 08-4月 -13 VALID
已选择3行。
六、验证触发器的功能
[sql]
17:17:37 SCOTT@orcl> insert into emp_bak VALUES(1231,'cryking','MANGER',1,SYSDATE,12000,'',1);
已创建 1 行。
已用时间: 00: 00: 00.00
--查询日志记录表
17:15:19 SCOTT@orcl> select * from dml_log;
SESSION_ID OPER_USER TABNAME OPER_TYPE SERVER_HOST IP RUN_PROGRAM OPER_DATE
---------- --------------- ---------- ---------- -------------------- --------------- ------------- ---------
2116650 WINXP-904_CRY\A EMP_BAK INSERT WORKGROUP\WINXP-904_ 192.168.0.229 plsqldev.exe 08-4月 13
dministrator CRY
-----------
最后想抓DML的语句发现实现起来比较复杂,需要相关V$SQLAREA的视图的权限,所以后来还是以审计的方式进行跟踪了。。。