MySQLで複数のテーブルをロックする方法は?
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テーブルをバッチ更新する方法は?
最初にテーブルを作成しましょう- mysql> create table DemoTable -> ( -> BreakfastTime time -> ); Query OK, 0 rows affected (0.59 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable values('7:30:45'); Query OK, 1 row affected (0.19 sec) my
-
MySQLにテーブルが存在するかどうかを検出するにはどうすればよいですか?
テーブルの存在を検出するには、INFORMATION_SCHEMA.TABLESの概念を使用します。構文は次のとおりです- select table_name from information_schema.tables where table_schema=database() and table_name=yourTableName; 上記の構文を理解するために、テーブルを作成しましょう- mysql> create table DemoTable2032 -> ( -> ClientId int, &n