[DB] DML 트리거 생성하기

du·2022년 6월 30일
0

DB

목록 보기
2/2

트리거(Trigger)는 데이터베이스 이벤트에 반응하여 실행되는 프로그램 단위이다.
이 글은 그 중 DML 문이 수행될 때 자동으로 동작하는 DML 트리거의 사용법에 대해 정리한 글이다.

사용법

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE| DELETE } ON table_name 
FOR EACH ROW
BEGIN
	trigger_body -- 실핼될 구문
END

예시

상황: tbl_details 에 INSERT 이벤트가 발생한 후에 해당 유저의 point 합을 tbl_details 에 total 값으로 업데이트 해줘야 할 때 아래와 같이 트리거를 생성했다.
환경: MySQL 8

DELIMITER $$
CREATE TRIGGER `sum_trigger` AFTER INSERT ON `tbl_details` 
FOR EACH ROW BEGIN
DECLARE _sum INT DEFAULT 0;
SET _sum = (
            SELECT SUM(point) FROM TEST_DB.tbl_details 
            WHERE user_id = new.user_id 
           );
                
        UPDATE TEST_DB.tbl_sum 
        SET total = _sum  
        WHERE user_id = NEW.user_id;

END
$$

** OLD / NEW
OLD: 정의한 이벤트가 발생하기 전의 데이터
NEW: 정의한 이벤트가 발생한 후의 데이터
ex) 위에서 NEW.user_id 는 tbl_details 테이블에 INSERT 된 데이터의 user_id

참고자료

0개의 댓글