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 | +------+------+