2009-04-01 23 views

Répondre

8

Il est mon premier jour avec PostreSQL, mais je pense que vous pouvez vérifier l'état de déclenchement via table système pg_trigger: http://www.postgresql.org/docs/current/static/catalog-pg-trigger.html

Les colonnes dont vous aurez besoin sont tgrelid et tgenabled.

+2

Actuellement à jour: http://www.postgresql.org/docs/current/static/catalog-pg-trigger.html –

2

Le SQL ci-dessous fera le travail. Il affiche tous les déclencheurs dans votre base de données actuelle.

SELECT pg_namespace.nspname, pg_class.relname, pg_trigger.* 
FROM pg_trigger 
JOIN pg_class ON pg_trigger.tgrelid = pg_class.oid 
JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace 

Si tgenabled est 'D', le déclencheur est désactivé. Toutes les autres valeurs (documentées here) indiquent qu'il est activé d'une manière ou d'une autre.

BTW. Si vous voulez vérifier les éléments déclencheurs d'une table spécifique, la requête est un peu plus courte:

SELECT * FROM pg_trigger 
WHERE tgrelid = 'your_schema.your_table'::regclass 

Le coulé le type regclass vous obtient de nom de table qualifié à OID (object id) la facilité façon.

2
SELECT EXISTS (
    SELECT tgenabled 
    FROM pg_trigger 
    WHERE tgname='your_unique_trigger_name' AND 
      tgenabled != 'D' 
); 

Si vous connaissez le nom de déclenchement est unique au-dessus retourne vrai (t) si le your_unique_trigger_name déclencheur est activé:

exists 
-------- 
t 
(1 row) 

Si elle est désactivée, il retournerait faux (f).

Questions connexes