Mon googling-fu me manque. Comment savoir si un déclencheur PostgreSQL est désactivé ou non?Comment savoir si un trigger est activé dans PostgreSQL?
Répondre
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
.
Actuellement à jour: http://www.postgresql.org/docs/current/static/catalog-pg-trigger.html –
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.
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).
sont les déclencheurs activés par défaut lors de la création em? Est-ce que ALTER TABLE ENABLE TRIGGER est nécessaire? – user4658312