借助 LOCK TABLES 指令,您可以實作多個表鎖。語法如下 -
LOCK TABLES yourTableName1 WRITE; LOCK TABLES yourTableName2 WRITE; LOCK TABLES yourTableName3 WRITE; LOCK TABLES yourTableName4 WRITE; . . . N;
表鎖定不是事務安全的,它在嘗試鎖定第二個表之前首先隱式提交活動事務。
假設我有一個表格 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中文網其他相關文章!