Parece que essa determinada tarefa não pode ser resolvida em determinadas restrições. Se entendi corretamente, o número de bancos de dados e o esquema da linha são constantes.
Então, variáveis que saíram:
- "injeções" adicionais ao banco de dados
- Truques temporais
- Truques de gatilhos
- "Late binding" de alterações, que não foram replicadas a tempo
Atualmente, encontrei apenas uma ideia, que parece funcionar:
- Adicione um acionador na tabela "Linhas" para modificar o carimbo de data/hora do registro "Pedido" (last_line_time)
- Na réplica, espere até que apareça uma Linha com tempo igual a last_line_time.
- Se max(lines.line_time)> order.last_line_time, então o pedido é obsoleto
- Se max(lines.line_time)
- Se max(lines.line_time) ==order.last_line_time tudo está OK, por enquanto :)
Mas, este caso pode falhar em loop infinito, se as linhas forem constantemente modificadas e a réplica da tabela de linhas sempre ficar para trás.