MySQL 트리거를 활성화/비활성화하는 방법

minstone·2022년 4월 20일
post-thumbnail

MySQL에서 트리거를 활성화하거나 비활성화하는 기능은 내장되어 있지 않다.
때문에 트리거를 임시적으로 비활성화하고 다시 활성화하는 대안을 찾아보고 기록한다.


1. 변수를 이용한 트리거 비활성화

@DISABLE_TRI 변수를 사용하여 변수로 트리거를 제어

-- 트리거 생성
DELIMITER $$
CREATE TRIGGER TRI_TEST
BEFORE INSERT
ON TB_TEST FOR EACH ROW
BEGIN
  IF (@DISABLE_TRI IS NULL OR @DISABLE_TRI = 0) THEN
    -- 트리거 동작
  END IF;
END $$
DELIMITER ;

-- 트리거 비활성화
SET @DISABLE_TRIGGERS = 1;

-- 트리거 활성화
SET @DISABLE_TRIGGERS = 0;

2. 트리거 삭제

가장 간단하게 비활성화 하는 방법이라 생각한다.

-- 트리거 삭제명령어
DROP TRIGGER TRI_TEST;

삭제 전 복원에 필요한 정보확인은 아래 명령어를 통해 확인 가능하다.

-- 혹시모르니 삭제 전 트리거생성 문 확인
SHOW CREATE TRIGGER TRI_TEST;

-- 아래 명령문을 통해 트리거 생성문 및 정보확인가능
SELECT *
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE TRIGGER_SCHEMA = 'DB_TEST' AND TRIGGER_NAME = 'TRI_TEST';
profile
🌚Stone Kid

0개의 댓글