Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จะล็อคหลายตารางใน MySQL ได้อย่างไร?


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