MySQL(MariaDB)の排他制御の方法
ここではMySQL(MariaDB)の排他制御の方法を紹介します。
排他制御は、データの登録・更新中に、そのデータを他の人に書き換えられないようにする仕組みです。よくダブルブッキングされないようにするために使ったりします。
排他制御の方法
(1)テーブルにロックかかけます。
SELECTクエリの最後尾にFOR UPDATEを付けて実行します。
SELECTクエリの最後尾にFOR UPDATEを付けて実行します。
(2)トランザクションの開始
BEGIN
(3)クエリ実行
INSERTやUPDATEの実行
(4)ロック解除
COMMIT
// テーブルロック SELECT code, name FROM test_table FOR UPDATE; // トランザクション開始 BEGIN; // クエリ INSERT INTO test_table (code, name) VALUES ('01', 'tanaka'); // コミット ロック解除 COMMIT;
FOR UPDATEをするとコミットまたは、ロールバックされるまで、他のトランザクションからは、そのテーブルにアクセスできません。