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

MySQL에서 데이터베이스의 모든 트리거 목록 확인하는 방법


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 절을 활용해 특정 스키마, 테이블 또는 트리거 이름을 기준으로 필터링할 수 있어, 트리거가 많이 등록된 운영 환경에서 원하는 정보를 빠르게 찾아낼 때 특히 유용합니다.