Bảng mở khóa mysql

Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng khóa MySQL để hợp tác truy cập bảng giữa các phiên

Khóa là một cờ được liên kết với một bảng. MySQL cho phép một phiên máy khách có được khóa bảng một cách rõ ràng để ngăn các phiên khác truy cập vào cùng một bảng trong một khoảng thời gian cụ thể

Một phiên máy khách chỉ có thể lấy hoặc giải phóng các khóa bảng cho chính nó. Và một phiên máy khách không thể lấy hoặc giải phóng khóa bảng cho các phiên máy khách khác

Bảng mở khóa mysql
Bảng mở khóa mysql

Trước khi tiếp tục, hãy tạo một bảng tên là

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1 để thực hành với các câu lệnh khóa bảng

CREATE TABLE messages ( id INT NOT NULL AUTO_INCREMENT, message VARCHAR(100) NOT NULL, PRIMARY KEY (id) );

Code language: SQL (Structured Query Language) (sql)

Câu lệnh BẢNG KHÓA MySQL

Câu lệnh

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
2 sau đây có được khóa bảng một cách rõ ràng

LOCK TABLES table_name [READ | WRITE]

Code language: SQL (Structured Query Language) (sql)

Ở cú pháp này, bạn chỉ định tên bảng muốn khóa sau từ khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
2. Ngoài ra, bạn chỉ định loại khóa, 

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4 hoặc 

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
5

MySQL cho phép bạn khóa nhiều bảng bằng cách chỉ định danh sách các tên bảng được phân tách bằng dấu phẩy với các loại khóa mà bạn muốn khóa sau từ khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
2

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)

Câu lệnh UNLOCK TABLES của MySQL

Để mở khóa cho một bảng, bạn sử dụng câu lệnh

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
7 sau

CREATE TABLE messages ( id INT NOT NULL AUTO_INCREMENT, message VARCHAR(100) NOT NULL, PRIMARY KEY (id) );

Code language: SQL (Structured Query Language) (sql)
0

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ; Code language: SQL (Structured Query Language) (sql)4 Khóa

Khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4 có các tính năng sau

  • Khóa

    LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

    Code language: SQL (Structured Query Language) (sql)
    4 cho một bảng có thể được mua bằng nhiều phiên cùng một lúc. Ngoài ra, các phiên khác có thể đọc dữ liệu từ bảng mà không cần lấy khóa
  • Phiên giữ khóa

    LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

    Code language: SQL (Structured Query Language) (sql)
    4 chỉ có thể đọc dữ liệu từ bảng, nhưng không thể ghi. Và các phiên khác không thể ghi dữ liệu vào bảng cho đến khi khóa

    LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

    Code language: SQL (Structured Query Language) (sql)
    4 được giải phóng. Các thao tác ghi từ một phiên khác sẽ được đưa vào trạng thái chờ cho đến khi khóa

    LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

    Code language: SQL (Structured Query Language) (sql)
    4 được giải phóng
  • Nếu phiên kết thúc, bình thường hoặc bất thường, MySQL sẽ hoàn toàn giải phóng tất cả các khóa. Tính năng này cũng phù hợp với khóa

    LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

    Code language: SQL (Structured Query Language) (sql)
    5

Hãy xem cách khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4 hoạt động trong tình huống sau

Trước tiên, hãy kết nối với cơ sở dữ liệu trong phiên đầu tiên và sử dụng hàm

CREATE TABLE messages ( id INT NOT NULL AUTO_INCREMENT, message VARCHAR(100) NOT NULL, PRIMARY KEY (id) );

Code language: SQL (Structured Query Language) (sql)
06 để lấy id kết nối hiện tại như sau

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
0
Bảng mở khóa mysql
Bảng mở khóa mysql

Sau đó, chèn một hàng mới vào bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
2

Tiếp theo, truy vấn dữ liệu từ bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4
Bảng mở khóa mysql
Bảng mở khóa mysql

Sau đó, lấy khóa bằng câu lệnh

CREATE TABLE messages ( id INT NOT NULL AUTO_INCREMENT, message VARCHAR(100) NOT NULL, PRIMARY KEY (id) );

Code language: SQL (Structured Query Language) (sql)
09.

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
6

Cuối cùng, hãy thử chèn một hàng mới vào bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
8

MySQL đã đưa ra lỗi sau

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
9

Vì vậy, sau khi có được khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4, bạn không thể ghi dữ liệu vào bảng trong cùng một phiên

Hãy kiểm tra khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4 từ một phiên khác

Đầu tiên, kết nối với cơ sở dữ liệu và kiểm tra id kết nối

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
0
Bảng mở khóa mysql
Bảng mở khóa mysql

Tiếp theo, truy vấn dữ liệu từ bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1.

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4
Bảng mở khóa mysql
Bảng mở khóa mysql

Sau đó, chèn một hàng mới vào bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1.

LOCK TABLES table_name [READ | WRITE]

Code language: SQL (Structured Query Language) (sql)
2

Đây là đầu ra

Bảng mở khóa mysql
Bảng mở khóa mysql

Hoạt động chèn từ phiên thứ hai ở trạng thái chờ vì khóa ĐỌC đã được lấy trên bảng thông báo trong phiên đầu tiên và nó chưa được giải phóng

Từ phiên đầu tiên, hãy sử dụng câu lệnh

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
05 để hiển thị thông tin chi tiết

LOCK TABLES table_name [READ | WRITE]

Code language: SQL (Structured Query Language) (sql)
3
Bảng mở khóa mysql
Bảng mở khóa mysql

Sau đó, quay lại phiên đầu tiên và mở khóa bằng cách sử dụng câu lệnh

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
7. Sau khi bạn nhả khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4 từ phiên đầu tiên, thao tác

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
08 trong phiên thứ hai được thực thi.

Cuối cùng, kiểm tra dữ liệu của bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1 để xem hoạt động của

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
08 từ phiên thứ hai có thực sự được thực thi hay không

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4
Bảng mở khóa mysql
Bảng mở khóa mysql

Khóa ghi

Khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
5 có các tính năng sau

  • Phiên duy nhất giữ khóa của bảng có thể đọc và ghi dữ liệu từ bảng
  • Các phiên khác không thể đọc dữ liệu từ và ghi dữ liệu vào bảng cho đến khi khóa

    LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

    Code language: SQL (Structured Query Language) (sql)
    5 được giải phóng

Hãy đi vào chi tiết để xem khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
5 hoạt động như thế nào

Đầu tiên, có được khóa

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
5 từ phiên đầu tiên

LOCK TABLES table_name [READ | WRITE]

Code language: SQL (Structured Query Language) (sql)
5

Sau đó, chèn một hàng mới vào bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1

LOCK TABLES table_name [READ | WRITE]

Code language: SQL (Structured Query Language) (sql)
6

Nó đã làm việc

Tiếp theo, truy vấn dữ liệu từ bảng

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
1

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
4
Bảng mở khóa mysql
Bảng mở khóa mysql

Nó cũng hoạt động.

Sau đó, từ phiên thứ hai, hãy thử ghi và đọc dữ liệu

LOCK TABLES table_name [READ | WRITE]

Code language: SQL (Structured Query Language) (sql)
8

MySQL đặt các hoạt động này vào trạng thái chờ. Bạn có thể kiểm tra nó bằng cách sử dụng câu lệnh

LOCK TABLES table_name1 [READ | WRITE], table_name2 [READ | WRITE], .. ;

Code language: SQL (Structured Query Language) (sql)
27

LOCK TABLES table_name [READ | WRITE]

Code language: SQL (Structured Query Language) (sql)
3
Bảng mở khóa mysql
Bảng mở khóa mysql

Cuối cùng, mở khóa từ phiên đầu tiên.

CREATE TABLE messages ( id INT NOT NULL AUTO_INCREMENT, message VARCHAR(100) NOT NULL, PRIMARY KEY (id) );

Code language: SQL (Structured Query Language) (sql)
0

Bạn sẽ thấy tất cả các hoạt động đang chờ xử lý từ phiên thứ hai được thực hiện và hình ảnh sau đây minh họa kết quả

Bảng mở khóa mysql
Bảng mở khóa mysql

Đọc so với. Viết ổ khóa

  • Khóa đọc là khóa “chia sẻ” ngăn khóa ghi đang được lấy chứ không phải khóa đọc khác
  • Khóa ghi là khóa “độc quyền” ngăn chặn bất kỳ loại khóa nào khác

Trong hướng dẫn này, bạn đã học cách khóa và mở khóa các bảng để hợp tác với các truy cập bảng giữa các phiên