Як перелічити всі тригери в базі даних MySQL?


Відповіді:


149

Команда для переліку всіх тригерів:

show triggers;

або ви можете отримати доступ до INFORMATION_SCHEMAтаблиці безпосередньо:

select trigger_schema, trigger_name, action_statement
from information_schema.triggers

2
Я рекомендую скористатися запитом "SHOW TRIGGERS" замість прямого доступу до information_schema - останній буде дуже повільним, коли у вас на сервері буде більше тисячі баз даних, тоді як "SHOW TRIGGERS" все ще має видатні показники.
Мартін Таджур

Дякую fpr другий "складний" варіант. Перший не працює (не знаю залишку) на одному з хостів ...
userlond

3
Зверніть увагу, SHOW TRIGGERSщо вам потрібно мати TRIGGERпривілей на цю базу даних та таблицю. Якщо ви ввійдете в MySQL з непривілейованим користувачем, виконання SHOW TRIGGERSне поверне нічого, а не помилку. Це може заплутати, якщо ви не знаєте про вимогу привілеїв.
Крістофер Шульц

14

Я сподіваюся, що наступний код дасть вам більше інформації.

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

Це дасть вам 22 колонки у версії MySQL: 5.5.27 та вище

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
Я б уникнув використання LIKEпри роботі зі схемою. Я працював у середовищах, де це робив би таким чином, був би схильний до помилок, коли у клієнта була база даних під назвою "компанія" та інша назва "company_project". Я б також запропонував використовувати великі літери KEYWORDS для ясності та INFORMATION_SCHEMA та стовпців, щоб було зрозуміло, що ви не маєте справу зі звичайною БД.
AndrewWhalan

13

Ви можете скористатися нижче, щоб знайти певне визначення тригера.

SHOW TRIGGERS LIKE '%trigger_name%'\G

або нижче, щоб показати всі тригери в базі даних. Він буде працювати для MySQL 5.0 і вище.

SHOW TRIGGERS\G

9

Для показу певного тригера в певній схемі ви можете спробувати наступне:

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.