2009-04-01 26 views

Respuesta

2

El siguiente SQL hará el trabajo. Muestra todos los desencadenadores en su base de datos actual.

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 es 'd', el disparador está desactivado. Todos los demás valores (documentados here) indican que está habilitado de alguna manera.

BTW. Si desea comprobar los factores desencadenantes de una tabla específica, la consulta es un poco más corto:

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

El fundido al tipo regclass se obtiene de nombre de tabla calificado a OID (identificador de objeto) la fácil camino.

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

Si conoce el nombre del disparador es única la de arriba, devolverá verdadero (t) si está habilitado el your_unique_trigger_name gatillo:

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

Si deshabilitado volvería falsa (F).

Cuestiones relacionadas