DataBase/MySQL

[MySQL] 트리거(Trigger) 활용하기

누구세연 2024. 10. 9. 21:09

MySQL 트리거는 데이터베이스 관리에서 매우 유용한 도구지만 활용법을 잘 알지 못하거나 지나치기 쉽습니다!

트리거의 개념과 실제로 어떻게 활용할 수 있는지 확인해 보겠습니다.🧐

 

트리거(Trigger)란?

MySQL 트리거는 데이터베이스 테이블 변경(INSERT, UPDATE, DELETE)이 일어날 때 자동으로 실행되는 SQL 코드입니다.

이를 통해 데이터 무결성을 유지하거나 특정 이벤트가 발생했을 때 추가 작업을 자동화할 수 있습니다.

 

트리거는 다음 두 가지 조건에 따라 실행됩니다.

  • DML 이벤트
    데이터 조작 이벤트, 즉 INSERT, UPDATE, DELETE 등이 발생할 때
  • 타이밍
    트리거가 발생하는 시점, 즉 BEFORE 또는 AFTER

트리거의 유형

  • BEFORE 트리거
    트리거가 테이블에 대한 조작이 일어나기 전에 실행됩니다.
  • AFTER 트리거
    트리거가 테이블에 대한 조작이 일어난 후에 실행됩니다.

트리거의 구성 요소

  • 이벤트: 트리거가 반응하는 데이터 변경 작업 (INSERT, UPDATE, DELETE)
  • 시점: 트리거가 실행되는 시점 (BEFORE, AFTER)
  • 행동: 트리거가 실행될 때 수행할 SQL 명령어

 

MySQL 트리거 사용법

MySQL에서 트리거를 사용하는 방법을 알아보겠습니다. 기본적인 트리거 생성 구문은 다음과 같습니다.

CREATE TRIGGER trigger_name
BEFORE|AFTER INSERT|UPDATE|DELETE
ON table_name
FOR EACH ROW
BEGIN
    -- 실행할 동작
END;

트리거 생성 예시

  • BEFORE INSERT 트리거
    새로운 데이터를 삽입하기 전에 특정 필드를 자동으로 초기화하는 트리거
CREATE TRIGGER before_insert_example
BEFORE INSERT ON employees
FOR EACH ROW
BEGIN
    SET NEW.created_at = NOW();
END;

employees 테이블에 새로 삽입되는 행에 대해 created_at필드를 현재 시각으로 자동 설정합니다.

  • AFTER UPDATE 트리거
    테이블의 데이터가 수정된 후에 로그 테이블에 기록하는 트리거
CREATE TRIGGER after_update_example
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
    INSERT INTO employee_logs (emp_id, action, log_time)
    VALUES (OLD.id, 'UPDATED', NOW());
END;

employees 테이블의 데이터가 수정되면 employee_logs 테이블에 수정 로그를 남깁니다.

 

트리거 활용

트리거는 다양한 상황에서 매우 유용하게 사용됩니다.

  1. 데이터 무결성 유지
    예를 들어, 특정 필드가 유효한 값인지 미리 검사하거나 자동으로 계산된 값을 삽입할 때 사용할 수 있습니다.
    이를 통해 데이터베이스의 무결성을 유지할 수 있습니다.
  2. 감사(Audit) 및 로깅
    데이터가 변경되었을 때 해당 기록을 남기는 로그 테이블을 관리할 수 있습니다.
    예를 들어, 사용자가 테이블의 데이터를 수정하거나 삭제했을 때 그 내용을 자동으로 저장할 수 있습니다.
  3. 복잡한 비즈니스 로직 자동화
    특정 비즈니스 규칙을 자동으로 처리할 수 있습니다.
    예를 들어, 재고 관리 시스템에서 재고가 업데이트되었을 때 자동으로 알림을 보내거나 관련된 다른 테이블의 데이터를 동시에 수정하는 등의 작업이 가능합니다.

 

트리거 사용 시 주의 사항

트리거는 매우 강력한 도구이지만, 잘못 사용하면 성능 문제를 초래할 수 있습니다.

트리거가 너무 자주 호출되거나 복잡한 로직이 포함되면 쿼리 처리 속도가 느려질 수 있습니다.

따라서 트리거의 사용 범위와 복잡성을 적절히 조정하는 것이 중요합니다.

 

 

💡 MySQL 트리거는 데이터베이스 내에서 자동으로 실행되는 강력한 도구로, 데이터 무결성 유지 및 비즈니스 로직 자동화에 유용합니다. 트리거의 장점을 최대한 활용하되 성능과 유지보수 측면을 고려한 설계가 필요합니다.