LOCK TABLES コマンドを使用すると、複数のテーブル ロックを実装できます。構文は次のとおりです。 -
LOCK TABLES yourTableName1 WRITE; LOCK TABLES yourTableName2 WRITE; LOCK TABLES yourTableName3 WRITE; LOCK TABLES yourTableName4 WRITE; . . . N;
テーブル ロックはトランザクション セーフではなく、2 番目のテーブルをロックしようとする前に、最初にアクティブなトランザクションを暗黙的にコミットします。
テーブル OrderDemo -
mysql> create table OrderDemo -> ( -> OrderId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> OrderPrice int, -> OrderDatetime datetime -> ); Query OK, 0 rows affected (0.66 sec)
があるとします。これはテーブル OrderDemo と utfdemo をロックするクエリです。 utfdemo はサンプル データベースにすでに存在します。クエリは次のとおりです -
mysql> LOCK TABLES OrderDemo WRITE; Query OK, 0 rows affected (0.03 sec) mysql> LOCK TABLES utfdemo WRITE; Query OK, 0 rows affected (0.07 sec)
今度はセッションのテーブルをロックします。テーブルを作成しようとすると、エラーが発生します。
エラーは次のとおりです -
mysql> create table LockTableDemo -> ( -> UserId int, -> UserName varchar(10) -> ); ERROR 1100 (HY000): Table 'LockTableDemo' was not locked with LOCK TABLES mysql> create table UserIformation -> ( -> UserId int, -> UserName varchar(10) -> ); ERROR 1100 (HY000): Table 'UserIformation' was not locked with LOCK TABLES
この問題を解決するには、MySQL を再起動する必要があります。
以上がMySQL で複数のテーブルをロックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。