2016-11-16 4 views
2

Kurze Frage zu löschen ...Richtiger Weg Trigger in PostgreSQL

Muss man den DROP TRIGGER Betrieb verwenden: https://www.postgresql.org/docs/9.1/static/sql-droptrigger.html

Oder einfach wäre Einträge aus der pg_trigger Tabelle genügen zu löschen?

+0

Wenn Sie Standard-SQL verwenden können, verwenden Sie es. Vielleicht wirst du morgen mit anderen RDBMS arbeiten. –

+0

** Nie ** jemals mit den Systemtabellen herumspielen. Also, nein: Lösche nicht von 'pg_trigger' –

Antwort

2

Der richtige Weg ist der einzige. Verwenden Sie drop trigger, auch wenn das Löschen von pg_trigger scheint gut zu funktionieren. Tatsächlich tut es das nicht. Nachdem Sie manuell einen Eintrag aus pg_trigger löschen können Sie den Fehler (nicht sofort, aber wenn Sie erwarten, dass es reicht) wie folgt aus:

ERROR: could not find tuple for trigger 123456

Dies liegt daran, Postgres Informationen über Trigger für eine Tabelle auch in pg_depend speichert. Als ein exemplarisches Ergebnis können Sie den Tisch nicht fallen lassen.

1

Auf jeden Fall sollten Sie die Anweisung dafür verwenden. Dies ist Standard und tragbar.

1

Nicht aus pg_trigger löschen. Außerdem müssen Sie die FUNCTION, in der der Trigger basiert, explizit löschen, bevor Sie den Trigger löschen.

+1

Nein, es gibt keinen solchen Zwang. Natürlich sollten Sie die Triggerfunktion löschen, wenn sie nicht verwendet wird. – klin