ไม่ใช่ความคิดที่ดีที่จะตั้งข้อ จำกัด foreign key เป็น 0 เพราะถ้าคุณทำเช่นนั้นฐานข้อมูลของคุณจะไม่ตรวจสอบให้แน่ใจว่ามันไม่ได้ละเมิด Referential Integrity ซึ่งอาจนำไปสู่ข้อมูลที่ไม่ถูกต้องทำให้เข้าใจผิดหรือข้อมูลที่ไม่สมบูรณ์
คุณสร้าง foreign key ด้วยเหตุผล: เนื่องจากค่าทั้งหมดในคอลัมน์ชายน์จะต้องเหมือนกับค่าในคอลัมน์ parent หากไม่มีข้อ จำกัด กุญแจต่างประเทศแถวลูกสามารถมีค่าที่ไม่ได้อยู่ในแถวหลักซึ่งจะนำไปสู่ข้อมูลที่ไม่ถูกต้อง
ตัวอย่างเช่นสมมติว่าคุณมีเว็บไซต์สำหรับนักเรียนที่จะเข้าสู่ระบบและนักเรียนทุกคนจะต้องลงทะเบียนสำหรับบัญชีในฐานะผู้ใช้ คุณมีหนึ่งตารางสำหรับ ID ผู้ใช้โดยมี ID ผู้ใช้เป็นคีย์หลัก และอีกตารางสำหรับบัญชีนักเรียนโดยมีรหัสนักศึกษาเป็นคอลัมน์ เนื่องจากนักเรียนทุกคนต้องมี ID ผู้ใช้จึงเป็นเรื่องเหมาะสมที่จะทำให้รหัสนักศึกษาจากตารางบัญชีนักเรียนเป็นรหัสต่างประเทศที่อ้างอิงถึงรหัสผู้ใช้รหัสหลักในตารางรหัสผู้ใช้ หากไม่มีการตรวจสอบกุญแจต่างประเทศนักเรียนอาจพบว่ามีรหัสนักศึกษาและไม่มีรหัสผู้ใช้ซึ่งหมายความว่านักเรียนจะได้รับบัญชีโดยไม่ต้องเป็นผู้ใช้ซึ่งผิด
ลองนึกภาพถ้ามันเกิดขึ้นกับข้อมูลจำนวนมาก นั่นเป็นเหตุผลที่คุณต้องตรวจสอบกุญแจต่างประเทศ
เป็นการดีที่สุดที่จะทราบว่าอะไรเป็นสาเหตุของข้อผิดพลาด เป็นไปได้มากว่าคุณกำลังพยายามลบจากแถวหลักโดยไม่ต้องลบออกจากแถวลูก ลองลบจากแถวลูกก่อนที่จะลบออกจากแถวหลัก