Mysql/トランザクション
提供: 初心者エンジニアの簡易メモ
トランザクションサンプル
mysql> CREATE TABLE `areas` (
`ken` varchar(20) DEFAULT NULL,
`si` varchar(20) DEFAULT NULL,
KEY `idx_area` (`ken`,`si`)
) ENGINE=InnoDB
--トランザクション開始
mysql> START TRANSACTION;
mysql> insert into areas values('yamaguti', 'iwakuni');
mysql> select * from areas;
+----------+---------+
| ken | si |
+----------+---------+
| yamaguti | iwakuni |
+----------+---------+
--処理を戻す
mysql> ROLLBACK;
mysql> select * from areas;
+-------+---------+
| ken | si |
+-------+---------+
--トランザクション開始
mysql> START TRANSACTION;
mysql> insert into areas values('yamaguti', 'iwakuni');
--確定
mysql> COMMIT;
mysql> select * from areas;
+----------+---------+
| ken | si |
+----------+---------+
| yamaguti | iwakuni |
+----------+---------+
行ロック(悲観的
mysql> START TRANSACTION; mysql> SELECT * FROM areas WHERE ken = 'yamaguti' FOR UPDATE; -- 更新トランザクションが存在する場合は待機 mysql> UPDATE areas set ken = 'test' WHERE ken = 'yamaguti'; mysql> COMMIT;
