Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

foreign_key_checks ใน MySQL ส่งผลต่อทั้งฐานข้อมูลหรือไม่?

Scope ของ foreign_key_checks

foreign_key_checks เป็น Session Variable (มี Scope ทั้ง Global และ Session)

ตั้งค่า Session (เฉพาะการเชื่อมต่อปัจจุบัน)

mysql> set foreign_key_checks = 0;
Query OK, 0 rows affected (0.00 sec)

ตั้งค่า Global (สำหรับ Session ใหม่ทั้งหมด)

mysql> set global foreign_key_checks = 0;
Query OK, 0 rows affected (0.05 sec)

รายละเอียด System Variable

PropertyValue
System Variableforeign_key_checks
ScopeGlobal, Session
DynamicYes
TypeBoolean
Default ValueON (1)

ผลกระทบเมื่อตั้งค่า = 0 (ปิด)

  • DROP SCHEMA: ลบ Schema ได้แม้มีตารางที่ถูกอ้างอิงจากตารางนอก Schema
  • DROP TABLE: ลบตารางได้แม้มี FK อ้างอิงจากตารางอื่น
  • ไม่ตรวจสอบ FK ขณะ INSERT/UPDATE

ผลกระทบเมื่อตั้งค่า = 1 (เปิด - ค่าเริ่มต้น)

  • ไม่สแกนข้อมูลเก่าระหว่างเปิดใช้งาน
  • แถวที่เพิ่มขณะ OFF ไม่ถูกตรวจสอบความสอดคล้อง

ข้อควรระวัง: การปิด FK Checks ควรทำเฉพาะช่วงนำเข้า/ย้ายข้อมูล แล้วควรเปิดกลับทันที