Dado que desea realizar una transacción distribuida , necesita el protocolo de confirmación de dos fases .
Inicia transacciones en ambas bases de datos como de costumbre, pero en lugar de confirmarlas, ejecuta
PREPARE TRANSACTION 'some_name';
Esto realiza todo lo que podría fallar durante una confirmación y persiste en las transacciones. Una vez que haya tenido éxito, ejecute lo siguiente en ambas bases de datos:
COMMIT PREPARED 'some_name';
para confirmar las transacciones.
Si algo falla durante PREPARE TRANSACTION
, ejecute lo siguiente para deshacerse de las transacciones ya preparadas:
ROLLBACK PREPARED 'some_name';
Tenga en cuenta que necesita software de administrador de transacciones si usa transacciones preparadas, de modo que cualquier transacción preparada que quede atrás después de un bloqueo u otro problema inesperado se limpie de manera confiable. Las transacciones preparadas que no se comprometen o revierten permanecen para siempre y con absoluta certeza romperán su base de datos.