Se entendi corretamente, você está tentando:
- Parar a inserção e substituí-la por uma inserção em outra tabela (determinada pelo acionador)
- Atualizar uma tabela de resumo (
delete
/insert
) para apontar para a nova linha.
Seu problema é que 1 impede que 2 aconteça? Isso é lógico porque você interrompeu a inserção e também interrompeu qualquer processamento na inserção.
Então, para resolver isso, você tem algumas opções (as opções 1 e 2 são semelhantes)
- Chame
update_object_last_known_position()
deinsert_position()
e ter apenas um gatilho - Crie um método wrapper para ambos
insert_position()
eupdate_object_last_known_position()
e ter apenas um acionador. - Coloque o gatilho para
update_object_last_known_position()
em todas as tabelas queinsert_position()
pode inserir.