ฉันอาจจะใจแคบ แต่ถ้าฉันสร้างข้อ จำกัด คีย์ต่างประเทศและแถวได้รับการปรับปรุงหรือลบฉันจะสูญเสียการเชื่อมต่อนั้นถ้าคอลัมน์ของตารางลูกได้รับการตั้งค่าเป็นโมฆะ
อะไรคือจุดประสงค์ของการเก็บแถวกำพร้าเหล่านี้ไว้โดยเจตนา?
ฉันอาจจะใจแคบ แต่ถ้าฉันสร้างข้อ จำกัด คีย์ต่างประเทศและแถวได้รับการปรับปรุงหรือลบฉันจะสูญเสียการเชื่อมต่อนั้นถ้าคอลัมน์ของตารางลูกได้รับการตั้งค่าเป็นโมฆะ
อะไรคือจุดประสงค์ของการเก็บแถวกำพร้าเหล่านี้ไว้โดยเจตนา?
คำตอบ:
ไม่ว่าset null
จะมีประโยชน์หรือไม่ขึ้นอยู่กับสิ่งที่คุณเลือกที่null
จะหมายถึงในบริบทเฉพาะ - ด้วยความสับสนและความคิดเห็นรอบnull
IMO วิธีการที่เหมาะสมสำหรับ DBA
ด้วยกฎเหล่านั้นให้พิจารณากรณีการใช้งานต่อไปนี้:
null
ให้เป็นตัวแทนร้านค้าอิสระ (เช่นร้านที่ไม่ได้เป็นส่วนหนึ่งของห่วงโซ่)ในกรณีนี้on delete set null
มันสมเหตุสมผล มีวิธีอื่น ๆ ในการสร้างแบบจำลองกฎทางธุรกิจเหล่านี้ แต่นี่เป็นวิธีที่ง่ายที่สุดและถ้ามันเหมาะสมกับข้อเท็จจริงที่คุณสนใจในโลกแห่งความเป็นจริงฉันขอแนะนำให้มันสมบูรณ์แบบ
กรณีการใช้งานส่วนใหญ่ที่ฉันคิดได้โดยทั่วไปนั้นมีรูปแบบ "เอาล่ะเราสามารถทำสิ่งที่แตกต่างออกไป แต่เรารู้สึกว่าทำสิ่งนี้แทน"
พิจารณาowner
ฟิลด์สำหรับข้อบกพร่องในระบบติดตามปัญหาที่ บริษัท หากจอห์นหยุดทำงานแน่นอนว่าทุกปัญหาของเขาไม่ควรถูกลบเมื่อบัญชีของเขาถูกลบ ถึงแม้จะมีบางฐานข้อมูลที่อนุญาตให้SET DEFAULT
เป็นการกระทำ (หรือมีทริกเกอร์ดำเนินงานเดียวกัน) และการมีNobody
พนักงานเป็นเจ้าของค่าเริ่มต้นของปัญหาอาจเป็นตัวเลือก หรือเราอาจมีdisabled
สนามสำหรับจอห์นแทนที่จะลบบันทึกของเขา
RESTRICT
) ถ้าไม่มีเหตุผลอื่นที่ชี้โทษพนักงานเก่าเมื่อมีสิ่งผิดปกติเกิดขึ้น!