Puisque vous souhaitez effectuer une transaction distribuée , vous avez besoin du protocole de validation en deux phases .
Vous démarrez les transactions sur les deux bases de données comme d'habitude, mais au lieu de les valider, vous exécutez
PREPARE TRANSACTION 'some_name';
Cela exécute tout ce qui pourrait échouer lors d'une validation et persiste les transactions. Une fois que cela a réussi, vous exécutez ce qui suit sur les deux bases de données :
COMMIT PREPARED 'some_name';
pour valider les transactions.
Si quelque chose échoue pendant la PREPARE TRANSACTION
, vous exécutez ce qui suit pour vous débarrasser des transactions déjà préparées :
ROLLBACK PREPARED 'some_name';
Notez que vous avez besoin logiciel de gestion des transactions si vous utilisez des transactions préparées, afin que toutes les transactions préparées qui restent après un crash ou un autre problème inattendu soient nettoyées de manière fiable. Les transactions préparées qui ne sont pas validées ou annulées restent indéfiniment et casseront avec une certitude absolue votre base de données.