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?
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% 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 -
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.
Tags und Links triggers postgresql