121 votes

Comment lister tous les triggers d'une base de données MySQL ?

Quelle est la commande permettant de lister tous les triggers d'une base de données MySQL ?

185voto

Harry Points 1717

La commande pour lister tous les déclencheurs est :

show triggers;

ou vous pouvez accéder à la INFORMATION_SCHEMA table directement par :

select trigger_schema, trigger_name, action_statement
from information_schema.triggers

3 votes

Je vous recommande d'utiliser la requête "SHOW TRIGGERS" au lieu d'accéder directement à information_schema - cette dernière sera très lente dès que vous aurez plus de mille bases de données sur le serveur alors que "SHOW TRIGGERS" a toujours une performance exceptionnelle.

0 votes

Merci pour la deuxième version "compliquée". La première ne fonctionne pas (je ne connais pas la raison) sur l'un des hôtes ...

5 votes

Notez que SHOW TRIGGERS exige que vous ayez le TRIGGER pour cette base de données et cette table. Si vous vous connectez à MySQL avec un utilisateur non privilégié, l'exécution de la commande SHOW TRIGGERS ne retournera rien au lieu de lancer une erreur. Cela peut prêter à confusion si vous n'êtes pas conscient de l'exigence de privilège.

17voto

Pragnesh Karia Points 106

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%'

Vous obtiendrez ainsi un total de 22 colonnes en Version de MySQL : 5.5.27 et au-dessus

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 votes

J'éviterais d'utiliser LIKE quand il s'agit de schéma. J'ai travaillé dans des environnements où cette façon de faire était source d'erreurs : un client avait une base de données nommée "société" et une autre nommée "société_projet". Je suggérerais également de mettre une majuscule à KEYWORDS pour plus de clarté et à INFORMATION_SCHEMA et aux colonnes qui s'y trouvent pour qu'il soit clair que vous ne traitez pas avec une base de données ordinaire.

13voto

Kainda Points 104

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

SHOW TRIGGERS LIKE '%trigger_name%'\G

ou l'image ci-dessous pour montrer tous les triggers de la base de données. Cela fonctionne pour MySQL 5.0 et plus.

SHOW TRIGGERS\G

11voto

sunil Points 41

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%'

1voto

user14570900 Points 21

Vous pouvez utiliser MySQL Workbench : Connectez-vous au serveur MySQL Sélectionnez DB

  • tableaux
  • sur la ligne du nom du tableau, cliquez sur l'icône d'édition (ressemble à un outil de travail)
  • dans la fenêtre d'édition du tableau - Cliquez sur l'onglet "Déclencheurs".
  • Dans la liste des déclencheurs, cliquez sur le nom du déclencheur pour obtenir son code source.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X