Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 동일한 이벤트와 작업 시간을 가진 여러 트리거는 어떤 순서로 호출될까?

MySQL에서 동일한 이벤트(예: INSERT)와 동일한 작업 시간(BEFORE 또는 AFTER)을 가진 여러 트리거를 생성하면, 기본적으로 MySQL은 트리거가 생성된 순서대로 트리거를 호출합니다.

하지만 MySQL 5.7.2 버전부터 도입된 다음 두 가지 옵션을 사용하면 이 실행 순서를 직접 제어할 수 있습니다.

FOLLOWS 옵션

이 옵션을 사용하면 새로 생성하는 트리거가 지정한 기존 트리거의 이후에 활성화됩니다. 즉, 기존 트리거가 먼저 실행된 뒤 새 트리거가 실행됩니다.

구문

FOR EACH ROW FOLLOWS trigger_name

PRECEDES 옵션

이 옵션을 사용하면 새로 생성하는 트리거가 지정한 기존 트리거의 이전에 활성화됩니다. 즉, 새 트리거가 먼저 실행된 뒤 기존 트리거가 실행됩니다.

구문

FOR EACH ROW PRECEDES trigger_name

사용 예시

다음과 같이 CREATE TRIGGER 문에 옵션을 추가하여 실행 순서를 지정할 수 있습니다.

CREATE TRIGGER trg_after_insert
AFTER INSERT ON employees
FOR EACH ROW FOLLOWS trg_existing_trigger
BEGIN
  -- 트리거 본문
END;

이처럼 FOLLOWS와 PRECEDES 옵션을 활용하면 같은 이벤트에 연결된 여러 트리거 간의 의존 관계를 명확하게 정의할 수 있어, 로깅, 데이터 검증, 후속 처리 등의 작업을 원하는 순서대로 안정적으로 수행할 수 있습니다.