我想在触发器里面记录DELETE记录的账号 该怎样实现呢

解决方案 »

  1.   

    这个……暂时没想出太好的 
    刚做了个INSERT的例子 不过没成功 发现个问题
    --SCOTT 窗口
    SQL> create table t1(id number);Table created.SQL> create table t2(name varchar2(20));Table created.
    SQL> create table t1(id number);Table created.SQL> create table t2(name varchar2(20));Table created.
    --SYS窗口
    C:\Documents and Settings\Admin>sqlplus "/ as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on Thu Nov 26 22:53:22 2009Copyright (c) 1982, 2005, Oracle.  All rights reserved.
    Connected to:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining optionsSQL> select * from scott.t1;no rows selectedSQL> select * from scott.t1;        ID
    ----------
             1SQL> insert into scott.t1 values(2);1 row created.
    SQL> select * from scott.t2;NAME
    --------------------
    SCOTT
    SCOTT   --这里不行 因为插入的仍然是SCOTT用户马上熄灯了 
    先MARK一下
    明天再来看看
      

  2.   

    是这样的 假如我有一个表log,首先建立这个表的公有同义词,名字同样叫log然后我在这个表上建立触发器  
    create or replace trigger tri_log
    after update or delete on log不同的数据库账号删除和更新记录的时候我都需要记录进审计表
    说穿了就是要在触发器里提取删除和更新记录的账号 
      

  3.   


    --test账户下
    [TEST@ora10gr1#2009-11-27/21:59:11] SQL>create table delete_log(user_name varchar(30),date_time date);Table created.[TEST@ora10gr1#2009-11-27/21:59:12] SQL>create table log(id int);Table created.[TEST@ora10gr1#2009-11-27/21:59:12] SQL>create public synonym log for log;Synonym created.[TEST@ora10gr1#2009-11-27/21:59:12] SQL>
    [TEST@ora10gr1#2009-11-27/21:59:12] SQL>create or replace trigger trigger_log
      2  before delete on log
      3  declare
      4      pragma autonomous_transaction;
      5  begin
      6      insert into delete_log values(user,sysdate);
      7      commit;
      8  end;
      9  /Trigger created.[TEST@ora10gr1#2009-11-27/21:59:12] SQL>
    [TEST@ora10gr1#2009-11-27/21:59:12] SQL>delete from log;0 rows deleted.[TEST@ora10gr1#2009-11-27/21:59:12] SQL>select * from delete_log;USER_NAME                      DATE_TIME
    ------------------------------ -------------------
    TEST                           2009-11-27/21:59:12--另外一个账户下(sys)
    [SYS@ora10gr1#2009-11-27/22:00:08] SQL>delete from log;0 rows deleted.[SYS@ora10gr1#2009-11-27/22:00:08] SQL>select * from test.delete_log;USER_NAME                      DATE_TIME
    ------------------------------ -------------------
    SYS                            2009-11-27/22:00:08
    TEST                           2009-11-27/21:59:12
    情况就是这样,自己根据需要再扩充内容吧。。