MySQLで複数のDBを跨いだトランザクションを試してみる

CentOSにMySQL5.6をインストールしてみる
の続き

MySQLで複数のDBを跨いだトランザクションを試してみる。

準備

データベースを2つ作成して、

mysql> create database db1;
mysql> create database db2;

それぞれでテーブルを作成しておく。

mysql> use db1
mysql> create table sample (id int) ENGINE=InnoDB;
mysql> use db2
mysql> create table sample (id int) ENGINE=InnoDB;

rollbackしてみる

両方のDBで追加した後ロールバックする。

mysql> use db1
mysql> start transaction;
mysql> insert into sample (id) values (1);
mysql> use db2
mysql> insert into sample (id) values (1);
mysql> rollback;

両方のDB共ロールバックできている。

mysql> use db1
mysql> select * from sample;
Empty set (0.00 sec)
mysql> use db2
mysql> select * from sample;
Empty set (0.00 sec)

commitしてみる

両方のDBで追加した後コミットする。

mysql> use db1
mysql> start transaction;
mysql> insert into sample (id) values (1);
mysql> use db2
mysql> insert into sample (id) values (1);
mysql> commit;

両方のDB共コミットできている。

mysql> use db1
mysql> select * from sample;
+------+------+
| id   | val  |
+------+------+
|    1 | NULL |
+------+------+
mysql> use db2
mysql> select * from sample;
+------+------+
| id   | val  |
+------+------+
|    1 | NULL |
+------+------+