MySQL에서는 SHOW TRIGGERS 문을 사용하여 데이터베이스에 정의된 모든 트리거의 목록을 간편하게 확인할 수 있습니다. 다음 예제를 통해 실제 사용 방법을 살펴보겠습니다.
예제 1: 현재 데이터베이스의 트리거 조회
mysql> Show Triggers\G *************************** 1. row *************************** Trigger: trigger_before_delete_sample Event: DELETE Table: sample Statement: BEGIN SET @count = if (@count IS NULL, 1, (@count+1)); INSERT INTO sample_rowaffected values (@count); END Timing: BEFORE Created: 2017-11-21 12:31:58.70 sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERR OR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci *************************** 2. row *************************** Trigger: before_inser_studentage Event: INSERT Table: student_age Statement: IF NEW.age < 0 THEN SET NEW.age = 0; END IF Timing: BEFORE Created: 2017-11-21 11:26:15.34 sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERR OR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION Definer: root@localhost character_set_client: cp850 collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci 2 rows in set (0.01 sec)
위 결과 집합은 현재 선택된 데이터베이스에 존재하는 트리거들의 목록을 보여줍니다. 각 트리거마다 트리거 이름(Trigger), 이벤트 유형(Event), 적용 대상 테이블(Table), 실행문(Statement), 실행 시점(Timing), 생성 일시(Created) 등의 상세 정보가 함께 출력되므로, 트리거의 동작 방식을 한눈에 파악할 수 있습니다.
예제 2: 특정 데이터베이스의 트리거 조회
현재 데이터베이스가 아닌 특정 데이터베이스에 정의된 트리거 목록을 확인하고 싶다면 FROM 절 뒤에 데이터베이스 이름을 지정하면 됩니다.
mysql> Show Triggers from tutorials\G Empty set (0.00 sec)
위 결과에서 'tutorials'라는 이름의 데이터베이스에는 트리거가 하나도 존재하지 않는다는 것을 알 수 있습니다.
참고: information_schema로 트리거 조회하기
SHOW TRIGGERS 문 외에도 information_schema 데이터베이스의 TRIGGERS 테이블을 직접 조회하면 더욱 세밀한 조건 검색이 가능합니다.
mysql> SELECT * FROM information_schema.TRIGGERS
-> WHERE TRIGGER_SCHEMA = 'tutorials';이 방식은 WHERE 절을 활용해 특정 스키마, 테이블 또는 트리거 이름을 기준으로 필터링할 수 있어, 트리거가 많이 등록된 운영 환경에서 원하는 정보를 빠르게 찾아낼 때 특히 유용합니다.