ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 捕获DML语句的tigger

捕获DML语句的tigger

原创 Linux操作系统 作者:cqubityj 时间:2008-03-10 16:00:36 0 删除 编辑
在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,仅在系统事件触发器中才有效。

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

请登录后发表评论 登录
全部评论

注册时间:2007-12-19

  • 博文量
    133
  • 访问量
    427338