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';