Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

विदेशी कुंजी बाधाओं के साथ हटाने का आदेश,

आधिकारिक तौर पर, कैस्केड संचालन के क्रम पर आपका कोई नियंत्रण नहीं है। आप कुछ अदस्तावेजीकृत . का दुरुपयोग करने में सक्षम हो सकते हैं हालांकि व्यवहार:

  • 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 को हटाना तब भी विफल रहेगा। ऐसा लगता है कि आप अपने डिज़ाइन से यही रोकना चाहते हैं, लेकिन अगर आप चाहते हैं कि इस मामले में भी हटाना काम करे, तो आपको जरूरत इसे शामिल करने में सक्षम होने के लिए ट्रिगर का उपयोग करने के लिए (या इसे अपने एप्लिकेशन में मैन्युअल रूप से हटाएं), कैस्केडिंग तब तक काम नहीं करेगा जब तक आप श्रेणी तालिका में कैस्केड भी नहीं करते।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. इकाई ढांचे के लिए MySQL कनेक्शन का उपयोग नहीं कर सकता 6

  2. CURRENT_DATE/CURDATE() डिफ़ॉल्ट DATE मान के रूप में काम नहीं कर रहा है

  3. डेटाटाइम को दिनांक और समय मान में विभाजित करना

  4. MySQL में UUID प्रदर्शन?

  5. हाइबरनेट के साथ ऑटो इंक्रीमेंटेड कंपोजिट आईडी सीक्वेंस की मैपिंग में व्यवहार की व्याख्या करें