MySQL(MariaDB)の排他制御の方法

MySQL(MariaDB)の排他制御の方法

ここではMySQL(MariaDB)の排他制御の方法を紹介します。
排他制御は、データの登録・更新中に、そのデータを他の人に書き換えられないようにする仕組みです。よくダブルブッキングされないようにするために使ったりします。

排他制御の方法

(1)テーブルにロックかかけます。
  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をするとコミットまたは、ロールバックされるまで、他のトランザクションからは、そのテーブルにアクセスできません。