Jakie polecenie wyświetla listę wszystkich wyzwalaczy w bazie danych MySQL?
Odpowiedzi:
Polecenie do wyświetlenia wszystkich wyzwalaczy to:
show triggers;
lub możesz uzyskać INFORMATION_SCHEMA
bezpośredni dostęp do tabeli:
select trigger_schema, trigger_name, action_statement
from information_schema.triggers
TRIGGERS
tabeli znajduje się tutaj .SHOW TRIGGERS
wymaga to posiadania TRIGGER
uprawnień do tej bazy danych i tabeli. Jeśli logujesz się do MySQL z nieuprzywilejowanym użytkownikiem, wykonanie SHOW TRIGGERS
nic nie zwróci zamiast zgłosić błąd. Może to być mylące, jeśli nie jesteś świadomy wymagań dotyczących uprawnień.
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
LIKE
przypadku 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.
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%'