Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để khóa nhiều bảng trong MySQL?

Bạn có thể đạt được nhiều khóa bảng với sự trợ giúp của lệnh LOCK TABLES. Cú pháp như sau -

LOCK TABLES yourTableName1 WRITE;
LOCK TABLES yourTableName2 WRITE;
LOCK TABLES yourTableName3 WRITE;
LOCK TABLES yourTableName4 WRITE;
.
.
.
N;

Các khóa bảng không an toàn cho giao dịch và nó cam kết hoàn toàn giao dịch đang hoạt động đầu tiên trước khi cố gắng khóa bảng thứ hai.

Giả sử tôi có một bảng 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)

Đây là truy vấn để khóa bảng OrderDemo và utfdemo. Utfdemo đã có trong cơ sở dữ liệu mẫu. Truy vấn như sau -

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)

Bây giờ nó khóa bảng trong một phiên. Nếu bạn cố gắng tạo một bảng thì bạn sẽ gặp lỗi.

Lỗi như sau -

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

Để khắc phục điều này, bạn cần khởi động lại MySQL.