2009-04-01 15 views

Antwort

2

Die folgende SQL wird die Arbeit tun. Es zeigt alle Trigger in Ihrer aktuellen Datenbank an.

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 

Wenn tgenabled ist 'D', der Trigger deaktiviert ist. Alle anderen Werte (dokumentiert here) zeigen an, dass es in irgendeiner Weise aktiviert ist.

BTW. Wenn Sie die Auslöser für eine bestimmte Tabelle überprüfen möchten, ist die Abfrage etwas kürzer:

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

Die werfen zum regclass Typ bekommt man von qualifizierten Tabellennamen OID (Objekt-ID), die leicht Weg.

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

Wenn Sie wissen, dass die Triggernamen des oben wird return true (t) eindeutig sind, wenn die your_unique_trigger_name Trigger aktiviert ist:

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

Wenn es würde return false deaktiviert (f).

Verwandte Themen