ĐẶT FOREIGN_KEY_CHECKS trên phpmyadmin

Kiểm tra khóa ngoại trong MySQL có thể ngăn bạn thực hiện một số cập nhật cơ sở dữ liệu cho các bảng có ràng buộc khóa ngoại. Trong những trường hợp như vậy, bạn có thể tạm thời tắt tính năng kiểm tra khóa ngoại trong MySQL, thực hiện cập nhật và bật tính năng kiểm tra khóa ngoại trong MySQL sau đó. Đây là cách vô hiệu hóa ràng buộc khóa ngoại trong MySQL

 

Cách vô hiệu hóa kiểm tra khóa ngoại trong MySQL

Dưới đây là các bước để vô hiệu hóa kiểm tra khóa ngoại trong MySQL

Bạn có thể tắt kiểm tra khóa ngoại trong MySQL bằng cách đặt biến hệ thống Foreign_key_checks thành 0

SET foreign_key_checks = 0

Tương tự, bạn có thể kích hoạt kiểm tra khóa ngoại trong MySQL bằng cách đặt biến hệ thống Foreign_key_check thành 1

SET foreign_key_checks = 1

Tuy nhiên, xin lưu ý, sau khi bạn bật kiểm tra khóa ngoại, MySQL sẽ không xác thực lại dữ liệu hiện có mà bạn đã thêm sau khi tắt kiểm tra khóa ngoại. Nó sẽ chỉ kiểm tra bất kỳ bổ sung/cập nhật mới nào đối với cơ sở dữ liệu của bạn

Phần thưởng đọc. Cách tạo chuỗi trong MySQL

Chúng ta hãy xem xét một ví dụ. Giả sử bạn có hai bảng quốc gia và thành phố sau đây sao cho các thành phố có cột khóa ngoại country_id đề cập đến country_id ở các quốc gia

CREATE TABLE countries[
    country_id INT PRIMARY KEY AUTO_INCREMENT,
    country_name VARCHAR[255] NOT NULL
];

 

CREATE TABLE cities[
    city_id INT PRIMARY KEY AUTO_INCREMENT,
    city_name VARCHAR[255],
    country_id INT,
    FOREIGN KEY[country_id] 
		REFERENCES countries[country_id]
];

 

Phần thưởng đọc. Cách so sánh hai bảng trong MySQL

 

Bây giờ, hãy thử chèn một hàng vào bảng thành phố mà không đề cập đến giá trị khóa ngoại country_id và bạn sẽ gặp lỗi như hình bên dưới

Đôi khi, rất hữu ích khi tắt kiểm tra khóa ngoại. Ví dụ: bạn có thể tải dữ liệu vào bảng cha và bảng con theo bất kỳ thứ tự nào khi tắt chức năng kiểm tra ràng buộc khóa ngoài. Nếu bạn không tắt kiểm tra khóa ngoại, trước tiên bạn phải tải dữ liệu vào bảng cha và sau đó là bảng con, điều này có thể rất tẻ nhạt

Một tình huống khác mà bạn muốn tắt tính năng kiểm tra khóa ngoại là khi bạn muốn xóa một bảng. Trừ khi bạn vô hiệu hóa kiểm tra khóa ngoại, bạn không thể xóa bảng được tham chiếu bởi ràng buộc khóa ngoại

Để tắt kiểm tra khóa ngoại, bạn đặt biến

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
6 thành 0 như sau

SET foreign_key_checks = 0;

Code language: SQL [Structured Query Language] [sql]

Để kích hoạt lại kiểm tra ràng buộc khóa ngoại, bạn đặt giá trị của

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
6 thành 1

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]

Lưu ý rằng cài đặt

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
6 thành 1 không kích hoạt bất kỳ xác thực nào đối với dữ liệu bảng hiện có. Nói cách khác, MySQL sẽ không xác minh tính nhất quán của dữ liệu đã được thêm vào trong quá trình kiểm tra khóa ngoại.

Vô hiệu hóa ví dụ kiểm tra khóa ngoại

Đầu tiên, tạo một bảng mới tên là

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
9

SET foreign_key_checks = 1
0

Thứ hai, tạo một bảng khác có tên là

SET foreign_key_checks = 1
00

SET foreign_key_checks = 1
2

Bảng

SET foreign_key_checks = 1
00 có ràng buộc khóa ngoại đề cập đến cột
SET foreign_key_checks = 1
02 của bảng

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
9

Thứ ba, chèn một hàng mới vào bảng

SET foreign_key_checks = 1
00

SET foreign_key_checks = 1
7

MySQL đã đưa ra lỗi sau

SET foreign_key_checks = 1
8

Thứ tư, vô hiệu hóa kiểm tra khóa ngoại

SET foreign_key_checks = 0;

Code language: SQL [Structured Query Language] [sql]

Thứ năm, chèn một hàng mới vào bảng

SET foreign_key_checks = 1
00

SET foreign_key_checks = 1
7

Lần này, câu lệnh

SET foreign_key_checks = 1
06 được thực thi thành công do tính năng kiểm tra khóa ngoại bị vô hiệu hóa

Truy vấn sau đây trả về nội dung của bảng

SET foreign_key_checks = 1
00

CREATE TABLE countries[
    country_id INT PRIMARY KEY AUTO_INCREMENT,
    country_name VARCHAR[255] NOT NULL
];
4

Thứ sáu, kích hoạt lại kiểm tra ràng buộc khóa ngoại

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]

Khi kiểm tra khóa ngoại được bật lại, MySQL không xác thực lại dữ liệu trong bảng. Tuy nhiên, nó sẽ không cho phép bạn chèn hoặc cập nhật dữ liệu vi phạm ràng buộc khóa ngoại

Cuối cùng, chèn một hàng vào bảng

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
9 có giá trị trong cột
SET foreign_key_checks = 1
02 là 1 để làm cho dữ liệu nhất quán trong cả hai bảng

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
0

Bỏ bảng có ràng buộc khóa ngoài

Giả sử rằng bạn muốn loại bỏ các bảng

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
9 và
SET foreign_key_checks = 1
00

Đầu tiên, thả cái bàn xuống

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
9

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
1

MySQL đã đưa ra lỗi này

SET foreign_key_checks = 1;

Code language: SQL [Structured Query Language] [sql]
2

Để khắc phục điều này, bạn có hai lựa chọn

  • Bỏ bàn
    SET foreign_key_checks = 1
    00 trước rồi bỏ bàn

    SET foreign_key_checks = 1;

    Code language: SQL [Structured Query Language] [sql]
    9
  • Vô hiệu hóa kiểm tra khóa ngoại và thả bảng theo bất kỳ trình tự nào

Chúng tôi sẽ trình bày cách thứ hai vô hiệu hóa kiểm tra ràng buộc khóa ngoài trước khi bỏ bảng

Foreign_key_checks được đặt là gì?

CHI TIẾT. Biến hệ thống Foreign_key_checks kiểm soát xem có bật các ràng buộc khóa ngoại hay không . Khi nó được đặt thành TẮT, các ràng buộc khóa ngoài bị vô hiệu hóa. Khi nó được đặt thành BẬT, các ràng buộc khóa ngoài được bật.

Làm cách nào để kích hoạt ràng buộc khóa ngoài trong MySQL?

Trong MySQL, các bảng InnoDB và NDB hỗ trợ kiểm tra các ràng buộc khóa ngoài. Việc kiểm tra khóa ngoại được kiểm soát bởi biến Foreign_key_checks, được bật theo mặc định . Thông thường, bạn để biến này được bật trong quá trình hoạt động bình thường để thực thi tính toàn vẹn tham chiếu.

Làm cách nào để tắt kiểm tra khóa ngoại trong phpmyadmin?

Từ tab Xuất, chọn phương thức xuất "Tùy chỉnh". Trong phần "Tùy chọn dành riêng cho định dạng. ", tìm và chọn "Tắt kiểm tra khóa ngoại" .

Làm cách nào để kiểm tra trạng thái khóa ngoại trong MySQL?

To see all FKs in your table: USE ''; SELECT i. TABLE_NAME, i. CONSTRAINT_TYPE, i. CONSTRAINT_NAME, k. .. .
To see all the tables and FKs in your schema: USE ''; SELECT i. TABLE_NAME, i. CONSTRAINT_TYPE, i. .. .
Để xem tất cả các FK trong cơ sở dữ liệu của bạn. CHỌN tôi. TABLE_SCHEMA, tôi. TABLE_NAME, tôi

Chủ Đề