PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Vorher- und Nachher-Trigger bei demselben Ereignis? Füllen Sie eine untergeordnete Tabelle PostgreSQL

Wenn ich dich richtig verstehe, versuchst du:

  1. Beenden Sie die Einfügung und ersetzen Sie sie durch eine Einfügung in eine andere Tabelle (bestimmt durch den Auslöser)
  2. Aktualisieren Sie eine Übersichtstabelle (delete /insert ), um auf die neue Zeile zu zeigen.

Ihr Problem ist, dass 1 verhindert, dass 2 passiert? Das ist logisch, weil Sie die Einfügung gestoppt haben, also haben Sie auch jegliche Verarbeitung der Einfügung gestoppt.

Um dies zu lösen, haben Sie also mehrere Möglichkeiten (Optionen 1 und 2 sind ähnlich)

  1. Rufen Sie update_object_last_known_position() auf aus insert_position() und haben nur einen Trigger
  2. Erstellen Sie eine Wrapper-Methode für beide insert_position() und update_object_last_known_position() und haben nur einen Trigger.
  3. Setzen Sie den Auslöser für update_object_last_known_position() auf allen Tabellen, die insert_position() könnte eingefügt werden in.