Database/Oracle
Trigger를 이용한 변경 전 데이터 보관하기
deverexpert
2011. 10. 4. 16:10
CREATE OR REPLACE TRIGGER TRG_USER AFTER UPDATE OR DELETE ON TB_USER FOR EACH ROW DECLARE V_DML_STS VARCHAR2(1); -- DML 요청 상태(UPDATE : U, DELETE : D) V_DML_DATE DATE; -- DML 요청 시간 V_DML_IP VARCHAR2(15); -- DML 요청 IP V_DML_PRGM VARCHAR2(100); -- DML 요청 프로그램 V_DML_MACHINE VARCHAR2(50); -- DML 요청 MACHINE BEGIN V_DML_IP := SYS_CONTEXT('USERENV','IP_ADDRESS'); V_DML_PRGM := SUBSTRB(SYS_CONTEXT('USERENV','MODULE'), 1, 100); V_DML_DATE := SYSDATE; V_DML_MACHINE := SUBSTRB(SYS_CONTEXT('USERENV','HOST'), 1, 50); IF UPDATING THEN V_DML_STS := 'U'; ELSIF DELETING THEN V_DML_STS := 'D'; ELSE V_DML_STS := 'O'; END IF; INSERT INTO TRG_USER ( USER_ID, DML_DATE, DML_STS, DML_IP, DML_PRGM, DML_MACHINE, USER_NM, CRE_USER_ID, CRE_DATE, UPD_USER_ID, UPD_DATE ) VALUES ( :OLD.USER_ID, V_DML_DATE, V_DML_STS, V_DML_IP, V_DML_PRGM, V_DML_MACHINE, :OLD.USER_NM, :OLD.CRE_USER_ID, :OLD.CRE_DATE, :OLD.UPD_USER_ID, :OLD.UPD_DATE ); EXCEPTION WHEN OTHERS THEN NULL; END TRG_USER;