PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Prima e Dopo si attivano sullo stesso evento? Riempi una tabella figlio PostgreSQL

Se ho capito bene stai cercando di:

  1. Interrompi l'inserto e sostituiscilo con un inserto in un'altra tabella (determinata dal trigger)
  2. Aggiorna una tabella di riepilogo (delete /insert ) per puntare alla nuova riga.

Il tuo problema è che 1 impedisce a 2 di accadere? È logico perché hai interrotto l'inserto, quindi hai interrotto anche qualsiasi elaborazione sull'inserto.

Quindi per risolvere questo problema hai un paio di opzioni (le opzioni 1 e 2 sono simili)

  1. Chiama update_object_last_known_position() da insert_position() e hai solo un trigger
  2. Crea un metodo wrapper per entrambi insert_position() e update_object_last_known_position() e avere un solo trigger.
  3. Inserisci il trigger per update_object_last_known_position() su tutte le tabelle che insert_position() potrebbe inserirsi in.