Mysql/トランザクション
提供: 初心者エンジニアの簡易メモ
2015年5月20日 (水) 03:18時点における127.0.0.1 (トーク)による版 (ページの作成:「==トランザクションサンプル== mysql> CREATE TABLE `areas` ( `ken` varchar(20) DEFAULT NULL, `si` varchar(20) DEFAULT NULL, KEY `idx_area` (`ken`,`si`...」)
トランザクションサンプル
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;