티스토리 뷰

MySQL trigger syntax

트리거란 ?

해당 테이블이나 뷰에 대해 어떤 액션이 가해 졌을 때 원하는 액션을 자동으로 처리하는 프로세스를 말하며 주로 로그데이터를 남길때 사용합니다.


트리거의 종류에는 크게 두가지로 나누어 볼 수 있습니다.


AFTER : 이벤트 이후 작동되며, 테이블에서만 사용가능합니다.

BEFORE : 이벤트 이전에 작동되며, 테이블과 뷰에서 사용가능합니다.


트리거는 CREATE TRIGGER문을 통해 생성합니다


DELIMITER $$

CREATE TRIGGER (트리거 이름)

   AFTER INSERT ON (기준 테이블명)

FOR EACH ROW

BEGIN

INSERT INTO (로그 테이블명)

SET

(쿼리)

END

$$DELIMITER ;




 

[ 예문 ]


트리거를 걸어줌으로써, INVOICE 테이블에 INSERT나 UPDATE, DELETE 같은 액션이 발생할 경우 INVOICE_DU테이블에도 같은 액션을 취하도록 합니다.


 

  • INSERT


DELIMITER $$

CREATE TRIGGER after_INVOICE_INSERT

   AFTER INSERT ON INVOICE

FOR EACH ROW

BEGIN

INSERT INTO INVOICE_DU

SET

id = NEW.id ,

COM_CODE = NEW.COM_CODE ,

DETAIL_COUNT = NEW.DETAIL_COUNT ,

FID = NEW.FID ,

INVOICE = NEW.INVOICE ,

DEST_KIND_ID = NEW.DEST_KIND_ID ,

LAST_STATE = NEW.LAST_STATE ,

LEVEL = NEW. LEVEL ,

MOD_DATE = NEW.MOD_DATE ,

REG_DATE = NEW.REG_DATE ,

TIER_CODE = NEW.TIER_CODE ;

END

$$DELIMITER ;



 

  • DELETE


DELIMITER $$

CREATE TRIGGER after_INVOICE_DETAIL_DELETE

   AFTER DELETE ON INVOICE_DETAIL

FOR EACH ROW

BEGIN

DELETE FROM INVOICE_DETAIL_DU

   WHERE INVOICE_DETAIL_DU.id = old.id;

END

$$DELIMITER ;


 

  • UPDATE


DELIMITER $$

CREATE TRIGGER after_INVOICE_UPDATE

   AFTER UPDATE ON INVOICE_DETAIL

FOR EACH ROW

BEGIN

UPDATE INVOICE_DETAIL_DU

SET

INVOICE_DETAIL_DU.INVOICE_ID = NEW.INVOICE_ID ,

INVOICE_DETAIL_DU.REG_DATE = NEW.REG_DATE ,

INVOICE_DETAIL_DU.STATE = NEW.STATE ,

INVOICE_DETAIL_DU.TIME = NEW.TIME ,

INVOICE_DETAIL_DU.PLACE = NEW.PLACE ,

INVOICE_DETAIL_DU.PHONE_NO = NEW.PHONE_NO ,

INVOICE_DETAIL_DU.PHONE_NO2 = NEW.PHONE_NO2 ,

INVOICE_DETAIL_DU.REMARK = NEW.REMARK ,

INVOICE_DETAIL_DU.LEVEL = NEW.LEVEL ,

INVOICE_DETAIL_DU.SYNC_YN = NEW.SYNC_YN,

 INVOICE_DETAIL_DU.SYNC_DATE = NEW.SYNC_DATE

where INVOICE_DETAIL_DU.id = NEW.id;

END


$$DELIMITER ;



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함