Comment puis-je afficher le contenu d'un déclencheur avec psql?

13

Je sais que je peux lister les déclencheurs avec \dft. Mais comment puis-je voir un déclencheur concret? Je veux connaître des détails tels que les événements sur lesquels le déclencheur est exécuté, quelle fonction est exécutée, etc.

Mnementh
la source

Réponses:

24

OK, je l'ai découvert moi-même.

La commande \dftne montre pas les déclencheurs eux-mêmes (comme je le pensais), elle montre toutes les fonctions de déclenchement (déclencheur de type retour).

Pour voir le déclencheur que vous pouvez créer \dS <tablename>, il affiche non seulement les colonnes de ce tableau, mais également tous les déclencheurs définis sur ce tableau.

Pour afficher la source de la fonction de déclenchement (ou n'importe quelle fonction), utilisez \df+ <functionname>.

Mnementh
la source
1
Utilisez \ ef <nom_fonction> pour des lectures plus pratiques.
Brain90
7

Si vous n'avez pas accès aux commandes psql, vous pouvez toujours utiliser:

select pg_get_functiondef('functionname'::regproc);
jlfenaux
la source
2

Vous pouvez essayer ce qui suit:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers ORDER BY event_object_table,event_manipulation

ou vous pouvez afficher les déclencheurs d'une table nommée 'table de test' comme ceci:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers WHERE event_object_table='testtable' ORDER BY event_object_table,event_manipulation
gdarcan
la source