J'ai une exigence pour obtenir la liste des déclencheurs associés à la table/vue donnée.
Quelqu'un peut-il m'aider à trouver les déclencheurs d'une table dans PostgreSQL?
Cela retournera tous les détails que vous voulez savoir
select * from information_schema.triggers
ou si vous voulez trier les résultats d'une table spécifique, alors vous pouvez essayer
SELECT event_object_table
,trigger_name
,event_manipulation
,action_statement
,action_timing
FROM information_schema.triggers
WHERE event_object_table = 'tableName' -- Your table name comes here
ORDER BY event_object_table
,event_manipulation
ce qui suit retournera le nom de la table qui a un déclencheur
select relname as table_with_trigger
from pg_class
where pg_class.oid in (
select tgrelid
from pg_trigger
)
Le problème avec la vue information_schema.triggers
(en plus d’être lent) est, par documentation :
Les déclencheurs de vue contiennent tous les déclencheurs définis dans le fichier .__ en cours. base de données sur les tables et les vues que l’utilisateur actuel possède ou a.. privilège autre que
SELECT
sur.
Cela signifie que vous ne voyez que les déclencheurs pour lesquels vous disposez des privilèges appropriés.
Pour voir les déclencheurs all d'une table, consultez le catalogue système pg_trigger
SELECT tgname
FROM pg_trigger
WHERE tgrelid = 'myschema.mytbl'::regclass; -- optionally schema-qualified
Fonctionne pour les vues de tables et.
Vous pouvez également utiliser une interface graphique telle que pgAdmin qui affiche la liste sous le nœud de la table dans le navigateur d’objets.
Sur l'outil de ligne de commande psql, vous pouvez également utiliser \dS <table_name>
(from https://serverfault.com/questions/331024/how-can-i-show-the-content-of-a-trigger-with-psql )
select tgname
,relname
,tgenabled
,nspname from pg_trigger
join pg_class on (pg_class.oid=pg_trigger.tgrelid)
join pg_namespace on (nspowner=relowner);
tgenabled (To check if its disabled)
O = trigger fires in "Origin" and "local" modes,
D = trigger is disabled,
R = trigger fires in "replica" mode,
A = trigger fires always.