> 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.

Muito Obrigado!

Rogério A Bassete
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a