tb_name="tableA"if inserting then
   .....
   (字段从select * from user_segment where segment_name=:tb_name得到,自己扩展)
   (记录在new中)
   elseif updateing then
     ........................
   else
     ..
end if

解决方案 »

  1.   

    --创建用于修改的表
    create table emp_tab
    (empno number(4),
    ename varchar2(10),
    job varchar2(10),
    mgr number(4),
    hiredate date,
    sal number(7,2),
    comm number(7,2),
    deptno number(4))
    /
    insert into emp_tab values
    (7369,'MIKE','CLERK',7902,'17-12月-80',1200,null,20)
    /
    --创建存储修改日志的表
    CREATE TABLE Audit_table (
    Seq NUMBER,
    User_at VARCHAR2(20),
    Time_now DATE,
    Term VARCHAR2(20),
    Job VARCHAR2(20),
    Proc VARCHAR2(20),
    enum NUMBER)
    /
    CREATE SEQUENCE Audit_seq
    /
    --创建存储前后更新值的表
    CREATE TABLE Audit_table_values 
    (Seq NUMBER,
    Dept NUMBER,
    Dept1 NUMBER,
    Dept2 NUMBER)
    /
    --创建触发器
    CREATE OR REPLACE TRIGGER Audit_trig
    AFTER INSERT OR UPDATE OR DELETE ON Emp_tab
    FOR EACH ROW
    DECLARE
     Time_now DATE;
     Terminal CHAR(20);
    BEGIN
    --get current time, and the terminal(终端) of the user:
     Time_now := SYSDATE;
     Terminal := USERENV('TERMINAL');
    --record new employee primary key
      IF INSERTING THEN  --记录对emp_tab的插入操作
          INSERT INTO Audit_table VALUES(Audit_seq.NEXTVAL,User,Time_now,
          Terminal,'Emp_tab', 'INSERT',:new.Empno);
    --record primary key of the deleted row:
      ELSIF DELETING THEN  --记录对emp_tab的删除操作
          INSERT INTO Audit_table VALUES(Audit_seq.NEXTVAL,User,Time_now,
          Terminal,'Emp_tab','DELETE',:old.Empno);
    --for updates, record the primary key of the row being updated:
      ELSE  --记录对emp_tab的修改操作
          INSERT INTO Audit_table VALUES (audit_seq.NEXTVAL, User, Time_now,
          Terminal,'Emp_tab','UPDATE',:old.Empno);
    --and for SAL and DEPTNO, record old and new values:
        IF UPDATING('SAL') THEN  --记录对emp_tab表SAL列修改前后值
              INSERT INTO Audit_table_values
              VALUES (Audit_seq.CURRVAL, 'SAL',:old.Sal, :new.Sal);
        ELSIF UPDATING('DEPTNO') THEN --记录对emp_tab表DEPTNO列修改前后值
              INSERT INTO Audit_table_values VALUES (Audit_seq.CURRVAL, 'DEPTNO',
              :old.Deptno, :new.DEPTNO);
        END IF;
      END IF;
    END;
    /
      

  2.   

    多谢楼上两位
    感觉上不是很难的,只是我刚接触这个东西,有些东西还不知道
    三楼的是不是太复杂了点
    试了一下二楼的没成功;继续探索ING