आधिकारिक तौर पर, कैस्केड संचालन के क्रम पर आपका कोई नियंत्रण नहीं है। आप कुछ अदस्तावेजीकृत . का दुरुपयोग करने में सक्षम हो सकते हैं हालांकि व्यवहार:
- MySQL 5.5 के लिए, विदेशी कुंजियों को उनके बनाए गए क्रम में निष्पादित किया जाता है, इसलिए
fk_category_org
को छोड़ना और फिर से बनाना -बाधा काम करना चाहिए - MySQL 5.6+ के लिए, विदेशी कुंजियों को उनके नामों के शाब्दिक क्रम में निष्पादित किया जाता है, इसलिए
fk_category_org
का नाम बदलना उदाहरण के लिएfk_z_category_org
काम करना चाहिए
यह अनिर्दिष्ट है और कभी भी बदल सकता है (और अन्य कारकों से प्रभावित हो सकता है)।
ऐसा कहा जा रहा है, ऐसा करने का उचित तरीका (और कुछ भी बहुत जटिल है on cascade
) before delete
. जोड़ना होगा -ट्रिगर
आपके organisation
. पर -टेबल जो "मैन्युअल रूप से" उपयोगकर्ताओं को पहले और फिर बाद में श्रेणियों को हटा देता है। before delete
-ट्रिगर on cascade
. से पहले निष्पादित होते हैं (इसलिए आप तय कर सकते हैं कि आप उन्हें रखना चाहते हैं या नहीं, हालांकि यह शायद भ्रामक होगा)।
यह पूरी तरह से स्पष्ट नहीं है कि यह आपका इच्छित व्यवहार है, लेकिन वर्तमान में, उपयोगकर्ता के पास एक श्रेणी हो सकती है जो संगठन 1 से संबंधित है, जबकि उसे संगठन 2 को सौंपा गया है। संगठन 1 को हटाना तब भी विफल रहेगा। ऐसा लगता है कि आप अपने डिज़ाइन से यही रोकना चाहते हैं, लेकिन अगर आप चाहते हैं कि इस मामले में भी हटाना काम करे, तो आपको जरूरत इसे शामिल करने में सक्षम होने के लिए ट्रिगर का उपयोग करने के लिए (या इसे अपने एप्लिकेशन में मैन्युअल रूप से हटाएं), कैस्केडिंग तब तक काम नहीं करेगा जब तक आप श्रेणी तालिका में कैस्केड भी नहीं करते।