Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Kiểm tra MySQL SET FOREIGN_KEY_CHECKS = 1?

Xác minh trạng thái FOREIGN_KEY_CHECKS trong MySQL

Biến foreign_key_checks kiểm soát việc MySQL có thực thi ràng buộc khóa ngoại hay không. Giá trị 1 (ON) = bật, 0 (OFF) = tắt.

Cách 1: Sử dụng biến hệ thống @@

mysql> SELECT @@foreign_key_checks;

Kết quả:

+----------------------+
| @@foreign_key_checks |
+----------------------+
| 1                    |
+----------------------+

Cách 2: Sử dụng SHOW VARIABLES

mysql> SHOW VARIABLES LIKE 'foreign%';

Kết quả:

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| foreign_key_checks | ON    |
+--------------------+-------+

Khi nào cần tắt FOREIGN_KEY_CHECKS?

  • Import database dump (tránh lỗi thứ tự bảng)
  • Truncate bảng có FK tham chiếu
  • Bulk load dữ liệu lớn
  • Restructure schema

Cách tắt/bật

-- Tắt (session)
SET FOREIGN_KEY_CHECKS = 0;

-- Bật lại (session)
SET FOREIGN_KEY_CHECKS = 1;

-- Hoặc dùng biến
SET @OLD_FK_CHECKS = @@FOREIGN_KEY_CHECKS;
SET FOREIGN_KEY_CHECKS = 0;
-- ... thực hiện tác vụ ...
SET FOREIGN_KEY_CHECKS = @OLD_FK_CHECKS;

Lưu ý quan trọng

  • Mặc định là ON (1) - an toàn cho toàn vẹn dữ liệu
  • Tắt chỉ trong session hiện tại, không ảnh hưởng session khác
  • Khi tắt, có thể chèn dữ liệu vi phạm FK, nhưng bật lại không tự kiểm tra dữ liệu cũ
  • Global variable: SET GLOBAL foreign_key_checks = 0; (cần quyền SUPER)