Jak wyświetlić listę wszystkich wyzwalaczy w bazie danych MySQL?


100

Jakie polecenie wyświetla listę wszystkich wyzwalaczy w bazie danych MySQL?

Odpowiedzi:


151

Polecenie do wyświetlenia wszystkich wyzwalaczy to:

show triggers;

lub możesz uzyskać INFORMATION_SCHEMAbezpośredni dostęp do tabeli:

select trigger_schema, trigger_name, action_statement
from information_schema.triggers

2
Zalecałbym skorzystanie z zapytania „SHOW TRIGGERS” zamiast bezpośredniego dostępu do information_schema - to drugie będzie bardzo powolne, gdy będziesz mieć więcej niż tysiąc baz danych na serwerze, podczas gdy „SHOW TRIGGERS” nadal ma znakomitą wydajność.
— Martin Tajur,

Dzięki za drugą "skomplikowaną" wersję. Pierwszy nie działa (nie wiem co) na jednym z hostów ...
— userlond

4
Zauważ, że SHOW TRIGGERSwymaga to posiadania TRIGGERuprawnień do tej bazy danych i tabeli. Jeśli logujesz się do MySQL z nieuprzywilejowanym użytkownikiem, wykonanie SHOW TRIGGERSnic nie zwróci zamiast zgłosić błąd. Może to być mylące, jeśli nie jesteś świadomy wymagań dotyczących uprawnień.
— Christopher Schultz

14

Mam nadzieję, że poniższy kod dostarczy Ci więcej informacji.

select * from information_schema.triggers where 
information_schema.triggers.trigger_schema like '%your_db_name%'

To daje łącznie 22 kolumny w wersji MySQL: 5.5.27 i wyżej

TRIGGER_CATALOG 
TRIGGER_SCHEMA
TRIGGER_NAME
EVENT_MANIPULATION
EVENT_OBJECT_CATALOG
EVENT_OBJECT_SCHEMA 
EVENT_OBJECT_TABLE
ACTION_ORDER
ACTION_CONDITION
ACTION_STATEMENT
ACTION_ORIENTATION
ACTION_TIMING
ACTION_REFERENCE_OLD_TABLE
ACTION_REFERENCE_NEW_TABLE
ACTION_REFERENCE_OLD_ROW
ACTION_REFERENCE_NEW_ROW
CREATED 
SQL_MODE
DEFINER 
CHARACTER_SET_CLIENT
COLLATION_CONNECTION
DATABASE_COLLATION

1
Unikałbym używania w LIKEprzypadku schematu. Pracowałem w środowiskach, w których zrobienie tego w ten sposób byłoby podatne na błędy, w których klient miał bazę danych o nazwie „firma”, a inna o nazwie „firma_project”. Sugerowałbym również pisanie wielkimi literami KEYWORDS dla jasności i INFORMATION_SCHEMA oraz znajdujących się tam kolumn, aby było jasne, że nie masz do czynienia ze zwykłą bazą danych.
— AndrewWhalan,

13

Możesz użyć poniżej, aby znaleźć konkretną definicję wyzwalacza.

SHOW TRIGGERS LIKE '%trigger_name%'\G

lub poniżej, aby pokazać wszystkie wyzwalacze w bazie danych. Będzie działać z MySQL 5.0 i nowszymi wersjami.

SHOW TRIGGERS\G

9

Aby pokazać konkretny wyzwalacz w określonym schemacie, możesz spróbować wykonać następujące czynności:

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.