Comment listez-vous tous les déclencheurs dans une base de données MySQL?

100

Quelle est la commande pour lister tous les déclencheurs dans une base de données MySQL?

Harry
la source

Réponses:

151

La commande pour lister tous les déclencheurs est:

show triggers;

ou vous pouvez accéder INFORMATION_SCHEMAdirectement au tableau en:

select trigger_schema, trigger_name, action_statement
from information_schema.triggers
Harry
la source
2
Je recommanderais d'utiliser la requête "SHOW TRIGGERS" au lieu d'accéder directement à information_schema - ce dernier sera très lent une fois que vous aurez plus de mille bases de données sur le serveur tandis que "SHOW TRIGGERS" a toujours des performances exceptionnelles.
Martin Tajur
Merci fpr deuxième version "compliquée". Le premier ne fonctionne pas (je ne connais pas la résolution) sur l'un des hôtes ...
userlond
4
Notez que cela SHOW TRIGGERSnécessite que vous ayez le TRIGGERprivilège pour cette base de données et cette table. Si vous vous connectez à MySQL avec un utilisateur non privilégié, l'exécution SHOW TRIGGERSne renverra rien au lieu de lancer une erreur. Cela peut être déroutant si vous n'êtes pas conscient de l'exigence de privilège.
Christopher Schultz
14

J'espère que le code suivant vous donnera plus d'informations.

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

Cela vous donnera un total de 22 colonnes dans la version MySQL: 5.5.27 et plus

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
Pragnesh Karia
la source
1
J'éviterais d'utiliser LIKEen traitant de schéma. J'ai travaillé dans des environnements où le faire de cette façon serait sujet aux erreurs où un client avait une base de données nommée «entreprise» et une autre nommée «entreprise_projet». Je suggérerais également de capitaliser KEYWORDS pour plus de clarté et INFORMATION_SCHEMA et les colonnes afin qu'il soit clair que vous ne traitez pas avec une base de données régulière.
AndrewWhalan
13

Vous pouvez utiliser ci-dessous pour trouver une définition de déclencheur particulière.

SHOW TRIGGERS LIKE '%trigger_name%'\G

ou ci-dessous pour afficher tous les déclencheurs de la base de données. Cela fonctionnera pour MySQL 5.0 et supérieur.

SHOW TRIGGERS\G
Kainda
la source
9

Pour afficher un déclencheur particulier dans un schéma particulier, vous pouvez essayer ce qui suit:

select * from information_schema.triggers where 
information_schema.triggers.trigger_name like '%trigger_name%' and 
information_schema.triggers.trigger_schema like '%data_base_name%'
sunil
la source