2009-04-01 11 views

Odpowiedz

2

Poniższy SQL wykona pracę. Wyświetla wszystkie wyzwalacze w bieżącej bazie danych.

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 

Jeśli tgenabled jest 'D', spust jest wyłączony. Wszystkie inne wartości (udokumentowane here) wskazują, że jest w jakiś sposób włączony.

BTW. Jeśli chcesz sprawdzić wyzwalaczy dla określonej tabeli, kwerendy jest nieco krótszy:

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

cast do rodzaju regclass dostaje od kwalifikowanej nazwy tabeli do OID (object id) łatwe droga.

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

Jeśli znasz nazwę wyzwalacza jest wyjątkowy wyżej powróci prawdziwe (T) czy your_unique_trigger_name wyzwalania jest włączona:

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

Jeśli wyłączone to return false (f).

Powiązane problemy