Як перелічити всі тригери в базі даних 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.