ในการออกแบบฐานข้อมูลร้านค้า มีตาราง 'ลูกค้า' และตาราง 'ใบเสร็จ' โดยลูกค้า 1 คนสามารถมีใบเสร็จได้หลายฉบับ และตาราง 'ใบเสร็จ' มี Foreign Key อ้างอิงไปยังตาราง 'ลูกค้า' หากผู้ดูแลระบบพยายามลบข้อมูลลูกค้ารายหนึ่งที่มีใบเสร็จอยู่ในระบบ โดยไม่ได้กำหนดค่า ON DELETE ใดๆ ไว้ล่วงหน้า จะเกิดผลใดในระบบฐานข้อมูล
กระบบจะแจ้งข้อผิดพลาดและไม่ยอมให้ลบข้อมูลลูกค้า เนื่องจากละเมิด Referential Integrity
ขระบบจะลบข้อมูลลูกค้าสำเร็จและลบข้อมูลใบเสร็จที่เกี่ยวข้องออกโดยอัตโนมัติ
คระบบจะลบข้อมูลลูกค้าสำเร็จและตั้งค่า Foreign Key ในตาราง 'ใบเสร็จ' เป็น NULL โดยอัตโนมัติ
งระบบจะสำรองข้อมูลลูกค้าไปยังตาราง Archive ก่อนทำการลบเพื่อรักษาความสมบูรณ์ของข้อมูล
เฉลยอธิบาย
เมื่อไม่ได้กำหนดค่า ON DELETE ไว้ ฐานข้อมูลจะใช้พฤติกรรมเริ่มต้น (Default) คือ RESTRICT หรือ NO ACTION ซึ่งจะปฏิเสธการลบข้อมูลในตารางหลัก (Parent Table) หากยังมีข้อมูลในตารางลูก (Child Table) อ้างอิงอยู่ เพื่อรักษา Referential Integrity การลบแบบอัตโนมัติต้องกำหนด ON DELETE CASCADE และการตั้งค่าเป็น NULL ต้องกำหนด ON DELETE SET NULL ไว้อย่างชัดเจน