> Leandro, sem querer abusar, pode me fornecer um LOG do psql que simula > isso de exemplo?
Imagine assim: Servidores A, B e C Comece a transação em cada um: A> BEGIN; B> BEGIN; C> BEGIN; Faça alguma coisa em cada servidor: A> INSERT INTO foo VALUES (1,2,3,4); B> INSERT INTO foo VALUES (1,2,3,4); C> INSERT INTO foo VALUES (1,2,3,4); Agora tente preparar as transações: A> PREPARE TRANSACTION 'xpto'; B> PREPARE TRANSACTION 'xpto'; C> PREPARE TRANSACTION 'xpto'; A sua aplicação deve ter ciência que os três PREPARE acima deram certo. Se *todos* derem certo: A> COMMIT PREPARED 'xpto'; B> COMMIT PREPARED 'xpto'; C> COMMIT PREPARED 'xpto'; Terminou. Agora vamos simular um erro no servidor B, se o PREPARE TRANSACTION falhar no B, você deverá fazer: A> ROLLBACK PREPARED 'xpto'; C> ROLLBACK PREPARED 'xpto'; E emitir um erro para seu usuário. Feito. PREPARE TRANSACTION é totalmente ACID, ou seja, atômico, garantido e persistente. Imagine que na hora do COMMIT, um dos servidores falhe! você pode fazer o COMMIT depois que esse servidor voltar, pois o PREPARE TRANSACTION já garantiu isso de forma persistente, em disco. Cuide apenas para que nenhum dos PREPARE TRANSACTION fique sem seu respectivo COMMIT ou ROLLBACK. []s Flavio Gurgel _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral