MySQLでテーブルのロックとロック解除を行う方法

MySQLでは、LOCK TABLES ステートメントでテーブルをロックし、UNLOCK TABLES ステートメントでテーブルのロックを解除します。

テーブルを 1 つ以上ロックするには、次の構文を使用します。

LOCK TABLES table_name [AS alias] [READ | WRITE], table_name [AS alias] [READ | WRITE], ...

table_nameがロック対象のテーブル名、[AS alias]はテーブルの別名(オプション)、[READ | WRITE]はロックの種類(オプション)、READは共有ロック、WRITEは排他ロックです。ロックの種類を指定しない場合は、WRITEロックがデフォルトです。

たとえば、usersとordersという名前のテーブルをロックするには、以下の文を使用できます。

LOCK TABLES users WRITE, orders READ;

テーブルのロックを解除するには、次の構文を使用できます。

UNLOCK TABLES;

この文を実行すると、以前にロックされた全てのテーブルが解放されます。

なお、ロックの解除は、トランザクションのコミットあるいはロールバックまで保持されるので、ロック後には必ずロック解除を行うこと。放置すると他のセッションがロックされたテーブルにアクセスできなくなる恐れあり。

bannerAds