Jak mogę wyświetlić zawartość wyzwalacza za pomocą psql?

13

Wiem, że mogę wymienić czynniki uruchamiające \dft. Ale jak mogę zobaczyć jeden konkretny czynnik uruchamiający? Chcę poznać szczegóły, takie jak zdarzenia, które wyzwalacz jest wykonywany, która funkcja jest wykonywana i tak dalej.

Memento
źródło

Odpowiedzi:

24

OK, sam się o tym dowiedziałem.

Polecenie \dftnie pokazuje samych wyzwalaczy (jak myślałem), pokazuje wszystkie funkcje wyzwalaczy (wyzwalacz typu powrotnego).

Aby zobaczyć wyzwalacz, który możesz wykonać \dS <tablename>, pokazuje nie tylko kolumny tej tabeli, ale także wszystkie wyzwalacze zdefiniowane w tej tabeli.

Aby wyświetlić źródło funkcji wyzwalacza (lub dowolnej funkcji), użyj \df+ <functionname>.

Memento
źródło
1
Użyj \ ef <nazwa_funkcji> dla wygodniejszych odczytów.
Brain90
7

Jeśli nie masz dostępu do poleceń psql, nadal możesz użyć:

select pg_get_functiondef('functionname'::regproc);
jlfenaux
źródło
2

Możesz spróbować:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers ORDER BY event_object_table,event_manipulation

lub możesz wyświetlić wyzwalacze tabeli o nazwie „testtable” w następujący sposób:

SELECT event_object_table,trigger_name,event_manipulation,action_statement,action_timing FROM information_schema.triggers WHERE event_object_table='testtable' ORDER BY event_object_table,event_manipulation
gdarcan
źródło