Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tắt kiểm tra khóa ngoại trong MySQL

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 vô hiệu hóa tính năng kiểm tra khóa ngoại trong MySQL, thực hiện cập nhật và bật kiểm tra khóa ngoại trong MySQL sau đó. Dưới đây là cách vô hiệu hóa ràng buộc khóa ngoại trong MySQL.

Cách tắt kiểm tra khóa ngoại trong MySQL

Dưới đây là các bước để tắt kiểm tra khóa ngoại trong MySQL.

Bạn có thể tắt tính năng 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 tính năng 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 ý rằng 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ó của bạn mà bạn đã thêm sau khi tắt kiểm tra khóa ngoại. Nó sẽ chỉ kiểm tra mọi bổ sung / cập nhật mới vào cơ sở dữ liệu của bạn.

Phần thưởng đọc:Cách tạo trình tự 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 sau và thành phố chẳng hạn như thành phố có cột khóa ngoại country_id đề cập đến country_id 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 ở thành phố bảng mà không đề cập đến country_id giá trị khóa ngoại và bạn sẽ gặp lỗi như hình dưới đây.

mysql> INSERT INTO cities(city_name, country_id)
       VALUES('NYC',1);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint
fails (`sample`.`cities`, CONSTRAINT `cities_ibfk_1` FOREIGN KEY (`country_id`)
 REFERENCES `countries` (`country_id`))

Bây giờ chúng ta hãy tắt tính năng kiểm tra khóa ngoại trong MySQL và thử chèn lại hàng.

mysql> SET foreign_key_checks = 0;

mysql> INSERT INTO cities(city_name, country_id)
       VALUES('NYC',1);

mysql> select * from cities;
+---------+-----------+------------+
| city_id | city_name | country_id |
+---------+-----------+------------+
|       2 | NYC       |          1 |
+---------+-----------+------------+

Bây giờ chúng tôi bật kiểm tra nước ngoài trong MySQL

mysql> SET foreign_key_checks = 1;

Phần thưởng đọc:Cách nhận dữ liệu một tháng trước trong MySQL

Cuối cùng, chúng tôi chèn một hàng tương ứng ở quốc gia bảng.

mysql> INSERT INTO countries(country_id, country_name)
       VALUES(1,'USA');

mysql> select * from countries;
+------------+--------------+
| country_id | country_name |
+------------+--------------+
|          1 | USA          |
+------------+--------------+

Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để kết nối với Cơ sở dữ liệu MySQL bằng Python?

  2. Hướng dẫn thiết kế cơ sở dữ liệu cho thông báo trong MySQL

  3. Cách giám sát nhiều phiên bản MySQL đang chạy trên cùng một máy - Mẹo &Thủ thuật ClusterControl

  4. Chuyển đổi dấu thời gian Unix thành ngày có thể đọc được của con người bằng MySQL

  5. Các ký tự đặc biệt trong PHP / MySQL