คุณสามารถล็อกตารางได้หลายแบบโดยใช้คำสั่ง 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