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.

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>.


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);

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.