Тъй като искате да извършите разпределена транзакция , вие се нуждаете от двуфазов протокол за ангажиране .
Започвате транзакции в двете бази данни както обикновено, но вместо да ги ангажирате, изпълнявате
PREPARE TRANSACTION 'some_name';
Това изпълнява всичко, което може да се провали по време на ангажимент и запазва транзакциите. След като това успее, изпълнявате следното и в двете бази данни:
COMMIT PREPARED 'some_name';
за извършване на транзакциите.
Ако нещо се провали по време на PREPARE TRANSACTION
, изпълнявате следното, за да се отървете от вече подготвени транзакции:
ROLLBACK PREPARED 'some_name';
Имайте предвид, че имате нужда софтуер за управление на транзакрион, ако използвате подготвени транзакции, така че всички подготвени транзакции, останали след срив или друг неочакван проблем, да бъдат надеждно изчистени. Подготвените транзакции, които не са ангажирани или отменени, остават завинаги и с абсолютна сигурност ще разбият вашата база данни.