PLSQL Trigger :OLD :NEW

来源:互联网 发布:网络协议实验报告 编辑:程序博客网 时间:2024/05/22 07:57
CREATE TABLE TEST01  (ID NUMBER, NAME VARCHAR2(10)  );CREATE TABLE AUDIT_TEST01  (    USERNAME VARCHAR2(10),    OP_TIME  VARCHAR2(30),    OLD_ID   NUMBER,    NEW_ID   NUMBER,    OLD_NAME VARCHAR2(10),    NEW_NAME VARCHAR2(10)  );

CREATE OR REPLACE TRIGGER AUDIT_TEST01_TRIG AFTER  INSERT OR  UPDATE OR  DELETE ON test01 FOR EACH row BEGIN  INSERT  INTO audit_test01 VALUES    (      USER,      TO_CHAR(sysdate,'YY-MM-DD HH24:MI:SS'),      :OLD.ID,      :NEW.ID,      :OLD.NAME,      :NEW.NAME    );END;/
Operate By HR
SQL> show user;ユーザーは"HR"です。SQL>  INSERT INTO TEST01 VALUES (10,'ABC');1行が作成されました。SQL>  INSERT INTO TEST01 VALUES (20,'XYZ');1行が作成されました。
Operate by SYSTEM
SQL> show user;ユーザーは"SYSTEM"です。SQL> UPDATE hr.TEST01 SET NAME = 'abc' WHERE ID = 10;1行が更新されました。SQL> UPDATE hr.TEST01 SET ID = 21 WHERE ID = 20;1行が更新されました。SQL>  DELETE FROM HR.TEST01 WHERE ID = 10;1行が削除されました。

SQL>  SELECT * FROM HR.TEST01;        ID NAME---------- ----------        21 XYZSQL> set line 1000SQL>  SELECT * FROM HR.AUDIT_TEST01;USERNAME   OP_TIME                            OLD_ID     NEW_ID OLD_NAME   NEW_NAME---------- ------------------------------ ---------- ---------- ---------- ----------HR         17-02-02 13:48:30                                 10            ABCHR         17-02-02 13:48:39                                 20            XYZSYSTEM     17-02-02 13:49:14                      10         10 ABC        abcSYSTEM     17-02-02 13:49:29                      20         21 XYZ        XYZSYSTEM     17-02-02 13:49:45                      10            abc


0 0
原创粉丝点击