MySQL에서 트리거(Trigger)를 삭제하려면 DROP 명령어를 사용합니다. 기본 문법은 다음과 같습니다.
DROP TRIGGER IF EXISTS yourTriggerName;
트리거 삭제 전 확인 사항
위 문법을 실습해 보려면 먼저 현재 데이터베이스에 트리거가 존재해야 합니다. 트리거가 있는지 여부는 아래 쿼리로 간단히 확인할 수 있습니다.
mysql> show triggers;
실행 결과는 다음과 같습니다.
+-------------+--------+---------------+------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+ | Trigger | Event | Table | Statement | Timing | Created | sql_mode | Definer | character_set_client | collation_connection | Database Collation | +-------------+--------+---------------+------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+ | CheckSalary | INSERT | employeetable | if new.EmployeeSalary < 1000 then set new.EmployeeSalary = 10000; end if | BEFORE | 2018-12-31 17:33:29.54 | STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION | root@% | utf8 | utf8_general_ci | utf8mb4_0900_ai_ci | +-------------+--------+---------------+------------------------------------------------------------------------+--------+------------------------+--------------------------------------------+---------+----------------------+----------------------+--------------------+ 1 row in set (0.17 sec)
위 출력 결과를 보면 employeetable 테이블에 'CheckSalary'라는 이름의 트리거가 등록되어 있습니다. 이 트리거는 INSERT 작업이 발생하기 BEFORE(이전)에 실행되며, 직원 급여(EmployeeSalary)가 1,000 미만일 경우 자동으로 10,000으로 설정하는 역할을 합니다.
DROP TRIGGER로 트리거 삭제하기
이제 DROP 명령어를 사용해 'CheckSalary' 트리거를 삭제해 보겠습니다. 실행 쿼리는 다음과 같습니다.
mysql> drop trigger if exists CheckSalary; Query OK, 0 rows affected (0.30 sec)
여기서 IF EXISTS 절을 함께 사용하면, 해당 트리거가 존재하지 않더라도 오류 없이 안전하게 쿼리가 실행됩니다. 실무 환경에서는 존재하지 않는 객체를 삭제할 때 발생하는 에러를 방지하기 위해 IF EXISTS 옵션을 사용하는 것이 좋은 습관입니다.
삭제 결과 확인하기
트리거가 정상적으로 삭제되었는지 다시 한번 SHOW TRIGGERS 명령어로 확인해 보겠습니다.
mysql> show triggers; Empty set (0.00 sec)
위 결과에서 볼 수 있듯이, 'test' 데이터베이스에는 더 이상 트리거가 존재하지 않습니다. 즉, DROP 명령어를 통해 'CheckSalary' 트리거가 성공적으로 제거된 것입니다.
정리
- 트리거 삭제 기본 문법:
DROP TRIGGER IF EXISTS 트리거명; - 현재 데이터베이스의 트리거 목록 확인:
SHOW TRIGGERS; IF EXISTS옵션을 사용하면 트리거가 없을 때 발생하는 오류를 방지할 수 있습니다.