Database/Oracle

[Oracle]트리거(Trigger)의 사용

  • -
반응형
트리거(Trigger)

트리거는 어떤 테이블에 이벤트(INSERT, UPDATE, DELETE)가 발생했을 때 자동적으로 실행되는 작업입니다.

제가 경험한 트리거는 테이블의 히스토리를 남기기 위한 목적으로 사용됐었습니다.

 

오라클에서 트리거의 문법은 다음과 같습니다.

CREATE [OR REPLACE] TRIGGER [트리거명]
[AFTER OR BEFORE]
 INSERT OR UPDATE OR DELETE ON [테이블명] [REFERENCING NEW AS NEW OLD AS OLD]
[FOR EACH ROW]

[DECLARE]

BEGIN   

END [트리거명];
  • AFTER : 이벤트가 발생한 후 트리거 실행 | BEFORE : 이벤트가 발생하기 전에 트리거 실행
  • INSERT, UPDATE, DELETE : 트리거 이벤트로서 하나 이상 올 수 있음
  • FOR EACH ROW : 행 트리거[각주:1] 여부를 결정. FOR EACH ROW가 없으면 문장 트리거[각주:2]가 실행
  • DECLARE : 변수 선언부
  • BEGIN : 트리거 실행
  • REFERENCING NEW AS NEW OLD AS OLD : 이전 값과 새로운 값을 참조할 때 사용하게 되는데 아래와 같이 사용할 수 있습니다.(밑줄 친 부분은 변수명으로써 변경 전 값을 참조할 변수명과 새로운 값을 참조할 변수명을 입력해주면 됩니다)
IF INSERTRING THEN
   INSERT INTO TABLE_HIST(NUM, NAME)
   SELECT :NEW.NUM, :NEW.NAME
   FROM   DUAL

ELSE IF UPDATEING THEN
   INSERT INTO TABLE_HIST(NUM, NAME)
   SELECT :OLD.NUM, :OLD.NAME
   FROM   DUAL

 

+ 피드백은 언제나 환영입니다 :)

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle]TO_CHAR  (0) 2018.07.17
[Oracle]PL/SQL FOR문  (0) 2018.07.15
[Oracle]데이터 복구(TIMESTAMP)  (0) 2018.07.12
[Oracle]시간 계산  (0) 2018.07.09
[Oracle]RANK() OVER()와 ROW_NUMBER() OVER  (0) 2018.07.04
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.