MySQL में विदेशी कुंजी बाधाओं को अस्थायी रूप से अक्षम करना
MySQL में, विदेशी कुंजी बाधाएं संदर्भात्मक अखंडता को लागू करती हैं, जिससे संबंधित तालिकाओं में डेटा स्थिरता सुनिश्चित होती है। हालाँकि, ऐसे परिदृश्य हैं जहां इन बाधाओं को अस्थायी रूप से अक्षम करना आवश्यक है, जैसे कि मॉडल हटाने के दौरान। स्टाइल = मॉडल.फॉरेनकी('स्टाइल', ऑन_डिलीट=मॉडल.कैस्केड) वर्ग शैली(मॉडल.मॉडल): आइटम = models.ForeignKey('Item', on_delete=models.CASCADE)
क्रमिक रूप से दोनों मॉडलों के एक उदाहरण को हटाने का प्रयास करने पर त्रुटि हो सकती है:
class Item(models.Model): style = models.ForeignKey('Style', on_delete=models.CASCADE) class Style(models.Model): item = models.ForeignKey('Item', on_delete=models.CASCADE)
इस विदेशी कुंजी बाधा को बायपास करने के लिए, आप निम्न विधियों में से किसी एक का उपयोग करके इसे अस्थायी रूप से अक्षम कर सकते हैं:
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n) transaction.commit_unless_managed() # foreign key constraint fails here cursor.execute("DELETE FROM myapp_style WHERE n = %s", n) transaction.commit_unless_managed()1. कुंजी अक्षम करें:
तालिका बदलें myapp_item अक्षम कुंजी;तालिका दोबारा खुलने या बंद होने पर यह आदेश बाधाओं को फिर से सक्षम करता है।
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n) transaction.commit_unless_managed() # foreign key constraint fails here cursor.execute("DELETE FROM myapp_style WHERE n = %s", n) transaction.commit_unless_managed()2. FOREIGN_KEY_CHECKS सेट करें:
FOREIGN_KEY_CHECKS = 0 सेट करें; # विदेशी कुंजी जांच अक्षम करेंहटाने की कार्रवाई के बाद बाधाओं को फिर से सक्षम करना याद रखें:
SET FOREIGN_KEY_CHECKS = 0; # Disable foreign key checks
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3