Wie kann ich den Inhalt eines Triggers mit psql anzeigen?

11

Ich weiß, dass ich die Auslöser auflisten kann \dft. Aber wie kann ich einen konkreten Auslöser sehen? Ich möchte Details wissen, wie zu welchen Ereignissen der Trigger ausgeführt wird, welche Funktion ausgeführt wird und so weiter.

Mnementh
quelle

Antworten:

23

OK, ich habe es selbst herausgefunden.

Der Befehl \dftzeigt nicht die Trigger selbst (wie ich dachte), sondern alle Triggerfunktionen (Trigger vom Typ Return).

Um den Trigger anzuzeigen \dS <tablename>, den Sie ausführen können , werden nicht nur die Spalten dieser Tabelle angezeigt, sondern auch alle in dieser Tabelle definierten Trigger.

Um die Quelle der Triggerfunktion (oder einer beliebigen Funktion) anzuzeigen, verwenden Sie \df+ <functionname>.

Mnementh
quelle
1
Verwenden Sie \ ef <Funktionsname> für bequemere Lesevorgänge.
Brain90
6

Wenn Sie keinen Zugriff auf psql-Befehle haben, können Sie dennoch Folgendes verwenden:

select pg_get_functiondef('functionname'::regproc);
jlfenaux
quelle
1

Sie könnten Folgendes versuchen:

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

oder Sie können Trigger einer Tabelle mit dem Namen 'testtable' wie folgt anzeigen:

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
quelle