ON DELETE CASCADE
एक पंक्ति को हटाने का एक तरीका है जब एक पंक्ति को संदर्भित किया जाता है। इसका मतलब यह है:
- आप तालिका में एक पंक्ति एक
- आप तालिका बी में एक पंक्ति तालिका में एक पंक्ति का संदर्भ देता है है एक
- आप तालिका में एक पंक्ति को हटा
- डेटाबेस को हटा देता है तालिका बी
में संबंधित पंक्ति में आपके पास आइटम हैं, और प्रत्येक आइटम किसी विशेष श्रेणी से संबंधित है। अपनी आइटम तालिका में, आपके पास एक category_id है (और कृपया अपनी वर्तनी को ठीक करें) जो श्रेणियों तालिका में एक पंक्ति को संदर्भित करता है। तो, अपनी स्थिति में:
दो कारणों के लिए ON DELETE CASCADE
के साथ ऐसा करना, कोई तरीका नहीं है है
- आप अपनी पहली वस्तु डालने से पहले एक खाली श्रेणी कैसे बना रहे हैं? डेटाबेस को तुरंत इसे हटाना होगा।
- डेटाबेस को तालिका को स्कैन करने के लिए बहुत सारे अतिरिक्त काम करना होगा। यह उस आइटम को "पता नहीं" # 23082 श्रेणी में अंतिम आइटम नहीं था; ऐसा करने के लिए श्रेणी में वस्तुओं की संख्या को ट्रैक करना होगा।
यह सब तथ्य यह है कि ON DELETE CASCADE
रेफेरेंन्शिअल सत्यनिष्ठा बनाए रखने का एक तरीका है से उपजी है।यही कारण है, यह एक तरीका है डेटाबेस आप एक मजबूत गारंटी देने के लिए के लिए यदि आप आइटम # 9847, पर देख श्रेणी # 20,393 जब आप के लिए श्रेणी # 20,393 नज़र जाना आप जानते हैं कि यह मौजूद है। यह श्रम की बचत डिवाइस नहीं है। :) यही कारण है कि अन्य विकल्पों ON DELETE SET NULL
और ON DELETE RESTRICT
हैं: वे भी अखंडता की गारंटी, लेकिन इसके बजाय हटाने की, वे बुरा संदर्भ हटाने या होने से मूल को नष्ट रोकने के।
तो जवाब है या तो आप एक क्रॉन जॉब लिखने के लिए समय-समय पर, कि मेज साफ या पर किसी तरह का उपयोग करने ट्रिगर हटा देते हैं तो खाली श्रेणियों के बारे में चिंतित हैं करना होगा।
स्रोत
2011-09-03 07:38:55
अगर मैं कर सकता तो मैं +10 दे दूंगा। इतना अच्छा जवाब। – Shef
ग्रेट स्पष्टीकरण। आपका बहुत बहुत धन्यवाद! –
यदि आपको लगता है कि यह एक महान स्पष्टीकरण था, तो यह अच्छा होगा अगर आपने यह उत्तर स्वीकार किया। – itsmequinn