Alle Trigger von Postgres DB fallen lassen?

8

Gibt es eine Möglichkeit, alle Trigger aus ALLEN Tabellen in Postgres zu löschen? Ich weiß, dass es eine pg_trigger-Tabelle gibt, die ich mir ansehen kann, aber es sieht nicht so aus, als ob sie genügend Informationen enthält, um zu entziffern, welche Trigger ich meinen Tabellen hinzugefügt habe.

Es sieht auch so aus, als ob Fremdschlüsseleinschränkungen in der Tabelle pg_trigger auftauchen, die ich NICHT löschen möchte. Ich möchte nur den vom Benutzer erstellten Trigger aus meinen Tabellen löschen und die FKs behalten.

Irgendwelche Vorschläge?

    
JamesD 22.06.2010, 12:46
quelle

7 Antworten

19

Danke, James.

Die Funktion von Alle Trigger von Postgres DB löschen? streift nur das Vorkommen aus der ersten Tabelle und hinterlässt die gleichnamigen Trigger in anderen Tabellen. Hier ist die feste Funktion:

%Vor%     
kuznetso3v 03.04.2011, 19:11
quelle
2

UPDATE: Sehen Sie die echte Lösung für die volle Funktion, die Sie wollen.

Okay, ich habe eine Funktion entwickelt, die das für mich tut:

%Vor%

Dadurch wird ein Trigger in Ihrem öffentlichen Schema gelöscht.

    
JamesD 10.08.2010 23:03
quelle
2

Fügen Sie die Sprache, in der Sie die Trigger erstellt haben, einfach in Kaskade ein.
Zum Beispiel erzeuge ich Trigger in plpgsql , so dass die folgende Abfrage alle Trigger sofort löscht -

%Vor%     
Pushpak Dagade 24.04.2012 08:32
quelle
1

Schauen Sie in das information_schema:

%Vor%     
Frank Heikens 22.06.2010 13:04
quelle
1

Am einfachsten ist es, pg_dump -s -Objektdefinitionen zu verwenden und sie nach Zeilen zu filtern, die mit CREATE TRIGGER beginnen.

Etwas wie

%Vor%

(in bash) sollte funktionieren (überprüfen Sie es und dann in der Datenbank).

Aber vielleicht sollten Sie stattdessen alter table table_name disable trigger trigger_name berücksichtigen.

    
Tometzky 22.06.2010 18:30
quelle
0

Sie könnten mit dieser Abfrage beginnen, um die Namen der Auslöser zu finden:

%Vor%     
pcent 22.06.2010 14:09
quelle
0

Ich bevorzuge dies (basierend auf das ) über die akzeptierte Antwort von @ kuznetso3v, weil es mir die Möglichkeit gibt, die DROP STATEMENT s vor der Ausführung mit Copy-Paste zu inspizieren:

%Vor%     
Drux 20.08.2016 04:31
quelle

Tags und Links