捕获DML语句的tigger
上一篇 /
下一篇 2008-03-10 16:00:36
/ 个人分类:oracle
在oracle9i上可以使用下面的trigger捕获DML语句:
create or replace trigger capt_sql
BEFORE DELETE OR INSERT OR UPDATE ON t1 FOR EACH ROW
declare
n number;
stmt varchar2(4000);
sql_text ora_name_list_t;
begin
n := ora_sql_txt(sql_text);
FOR i IN 1..n LOOP
stmt := stmt || sql_text(i);
END LOOP;
insert into t_sql(USERNAME,CLIENT_IP,SQL_TEXT,TABLE_NAME,OWNER)
values(user,sys_context('userenv','ip_address'),stmt,'T1','RAINY');
END;
/
注意:该方法在9207以上的版本中不再适用。
ORA_SQL_TXT is a "System defined event attribute" and is supposed to work only with "System triggers".
从9207开始,ORA_SQL_TXT返回的值是NULL,仅在系统事件触发器中才有效。
导入论坛
引用链接
收藏
分享给好友
推荐到圈子
管理
举报
TAG: