我有一个表,想记录下来客户端对它进行的操作(主要想记录删除操作),
当客户端对表table1进行删除操作时,我想记录下来删除操作的SQL语句及操作时间写到table2中去
这个触发器该怎么写呢?
新手求教,请大家帮我,谢谢。

解决方案 »

  1.   

    CREATE TRIGGER trigger_name
      AFTER DELETE ON col_name
      FOR EACH ROW
    BEGIN
      insert into table2(sys_time) values(current_timestamp at time zone 'GMT');
    END;删除执行的代码应该无法确定。
      

  2.   

    时间好插
    关键是执行的delete代码怎样确定
    等待高手
      

  3.   

    如果是oracle9.2.0.7之前的版本
    可以在delete的trigger中使用如下语句获得DML。CREATE OR REPLACE TRIGGER del_DML tmp
    BEFORE DELETE ON table1
    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 table2(userid,str) values(user,stmt);
    end;不过在9.2.7之后这个功能被作为BUG修正了,之后就不能再用了。
    包括10G