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;
この文を実行すると、以前にロックされた全てのテーブルが解放されます。
なお、ロックの解除は、トランザクションのコミットあるいはロールバックまで保持されるので、ロック後には必ずロック解除を行うこと。放置すると他のセッションがロックされたテーブルにアクセスできなくなる恐れあり。