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 XYZ
SQL> set line 1000
SQL> SELECT * FROM HR.AUDIT_TEST01;
USERNAME OP_TIME OLD_ID NEW_ID OLD_NAME NEW_NAME
---------- ------------------------------ ---------- ---------- ---------- ----------
HR 17-02-02 13:48:30 10 ABC
HR 17-02-02 13:48:39 20 XYZ
SYSTEM 17-02-02 13:49:14 10 10 ABC abc
SYSTEM 17-02-02 13:49:29 20 21 XYZ XYZ
SYSTEM 17-02-02 13:49:45 10 abc