트리거는 INSERT, UPDATE, DELETE 같은 데이터 조작 이벤트가 발생할 때 자동으로 실행되는 DB 객체(프로시저) 입니다.
| 구성 요소 | 설명 |
|---|---|
| 이벤트(Event) | 트리거가 반응할 조건 (INSERT, UPDATE, DELETE) |
| 시점(Timing) | 이벤트 전(BEFORE) 또는 후(AFTER) |
| 작업(Task) | 이벤트 발생 시 수행할 SQL 문 또는 로직 |
DML 트리거 (Data Manipulation Language Trigger)
BEFORE 트리거
AFTER 트리거
INSTEAD OF 트리거
-- 테이블 스키마
CREATE TABLE users
(
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE user_create_logs
(
log_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
action VARCHAR(50),
log_time DATETIME
);
-- 트리거
DELIMITER $$
CREATE TRIGGER trg_after_insert_user
AFTER INSERT
ON users
FOR EACH ROW
BEGIN
INSERT INTO user_create_logs(user_id, action, log_time)
VALUES (NEW.id, 'INSERT', NOW());
END $$
DELIMITER;
이 트리거는 users 테이블에 데이터가 추가될 때마다 user_create_logs에 로그를 자동 저장합니다.
| 사용 사례 | 설명 |
|---|---|
| 로그 기록 | 사용자가 테이블에 어떤 작업을 했는지 추적 |
| 감사(Audit) | 보안 및 변경 이력 관리 |
| 자동 값 계산 | 입력 시 자동으로 특정 필드를 계산 |
| 관련 테이블 동기화 | 다른 테이블의 데이터를 자동으로 갱신 |