Saya tidak dapat menemukan jawaban pasti apakah diperbolehkan melakukan transaksi dalam PHP mencakup banyak database atau tidak.
Saya menggunakan objek koneksi yang sama (mysqli) dan melakukan transaksi dengan cara ini:
$mysqli->autocommit(false);
try {
// Assume here that some code would throw an exception
$stmt = $mysqli->prepare("INSERT INTO db1.x (column) VALUES (y)");
$stmt->execute();
$stmt->close();
$stmt = $mysqli->prepare("INSERT INTO db2.x (column) VALUES (y)");
$stmt->execute();
$stmt->close();
$mysqli->commit();
// Great success
} catch (Exception $e) {
$mysqli->rollback();
throw $e; // handle elsewhere
}
Apakah ini diperbolehkan dan apakah akan dilakukan dan diputar kembali dengan benar? Menurut manual (http://dev.mysql.com/doc/refman/5.6/en/xa.html) dan utas lainnya di SO, sepertinya saya perlu menggunakan pernyataan XA, tetapi tidak begitu jelas (bagi saya) apakah ini saat menggunakan beberapa server database, banyak koneksi atau secara umum ketika menjalankan kode di atas.