有用户u1和u2,有一个表t1,t2。t1表在u1用户下,t2表在u2用户下。u1和u2用户都会对表t1(有id,name,age字段)做修改,如何利用触发器实现只记录u1用户对表t1的修改信息。每一条修改信息都要存储到t2表中。

解决方案 »

  1.   

    create or replace trigger tri_test
      before INSERT OR DELETE OR UPDATE on aa  
      for each row
    declare
      -- local variables here
      l_user VARCHAR2(20);
    BEGIN
      SELECT USER INTO l_user FROM dual;
      IF USER='u1' THEN
                IF inserting THEN
                   INSERT INTO u2.t2(action) VALUES('INSERT');
                ELSIF updating THEN
                  INSERT INTO u2.t2(action) VALUES('UPDATE');
                ELSE
                  INSERT INTO u2.t2(action) VALUES('DELETE');
                END IF;
      END IF;
    end tri_test;
      

  2.   

    create or replace trigger tri_test
      before INSERT OR DELETE OR UPDATE on aa  
      for each row
    declare
      -- local variables here
      l_user VARCHAR2(20);
    BEGIN
      SELECT USER INTO l_user FROM dual;
      IF l_user='u1' THEN   --错了,这里应该是l_user
                IF inserting THEN
                   INSERT INTO u2.t2(action) VALUES('INSERT');
                ELSIF updating THEN
                  INSERT INTO u2.t2(action) VALUES('UPDATE');
                ELSE
                  INSERT INTO u2.t2(action) VALUES('DELETE');
                END IF;
      END IF;
    end tri_test;