web-dev-qa-db-fra.com

PostgreSQL: Comment répertorier tous les déclencheurs qui utilisent un champ spécifique?

par exemple, j'ai une table étudiante avec (StudentID), je souhaite obtenir une liste de déclencheurs qui utilisent ce champ ...

par exemple, si dans le tableau X, il y a un déclencheur qui utilise StudentID, je veux qu'il soit affiché dans le résultat de la requête.

4
Jason

Vous pouvez le faire en interrogeant pg_proc et pg_trigger,

SELECT t.tgname FROM pg_trigger t, pg_proc p 
WHERE t.tgfoid=p.oid AND p.prosrc like '%studentid%';
2
Rodolphe

Si vous souhaitez filtrer sur le nom de la table si vous avez trop de déclencheurs, ajoutez simplement un filtre sur Relname de pg_class

SELECT tgrelid::regclass,t.tgname FROM pg_trigger t, pg_proc p, pg_class c 
WHERE c.oid = t.tgrelid AND t.tgfoid=p.oid 
AND c.relkind = 'r'
AND p.prosrc LIKE '%studentid%' AND c.relname = 'X';
1
Rodolphe