Poiché desideri eseguire una transazione distribuita , è necessario il protocollo di commit a due fasi .
Inizi le transazioni su entrambi i database come al solito, ma invece di eseguirne il commit, esegui
PREPARE TRANSACTION 'some_name';
Questo esegue tutto ciò che potrebbe non riuscire durante un commit e mantiene le transazioni. Una volta che l'operazione è riuscita, esegui quanto segue su entrambi i database:
COMMIT PREPARED 'some_name';
per impegnare le transazioni.
Se qualcosa non riesce durante la PREPARE TRANSACTION
, esegui quanto segue per eliminare le transazioni già preparate:
ROLLBACK PREPARED 'some_name';
Tieni presente che è necessario software di gestione delle transazioni se si utilizzano transazioni preparate, in modo che tutte le transazioni preparate lasciate indietro dopo un arresto anomalo o altri problemi imprevisti vengano ripulite in modo affidabile. Le transazioni preparate che non sono state impegnate o ripristinate rimarranno in circolazione per sempre e con assoluta certezza interromperanno il tuo database.