Dev/DB, SQL

[DB, SQL] MySQL Trigger 트리거의 개념과 예제

헝그리둘기 2025. 10. 16. 10:42

1. 의미

특정 테이블에 INSERT / UPDATE / DELETE 같은 이벤트가 발생했을 때 자동으로 실행되는 SQL 코드 블록

 

 

2. 트리거 관련 문법

한번 생성하면 수정이 불가능하여, 삭제 후 재생성해야 한다

-- 생성
CREATE TRIGGER 트리거명
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON 테이블명
FOR EACH ROW
BEGIN
    -- 실행할 SQL 문장들
END;

-- 조회
SHOW TRIGGERS;
SHOW CREATE TRIGGER 트리거명;

-- 삭제 
DROP TRIGGER 트리거명;

 

 

3. 예제

user 테이블에 insert 이벤트가 발생하면, user_log 테이블에 특정 값을 insert 하는 after_user_insert 트리거 생성

CREATE TRIGGER after_user_insert -- 트리거명
AFTER INSERT ON user -- user 테이블
FOR EACH ROW
BEGIN
    INSERT INTO user_log (user_id, action, action_time)
    VALUES (NEW.id, 'INSERT', NOW());  -- NEW.id 는 user테이블에 insert된 id값을 의미
END