MySQL DB इंजन है। यह एकाधिक स्टोरेज इंजन का उपयोग कर सकते हैं। MyISAM MySQL के लिए डिफ़ॉल्ट स्टोरेज इंजन है और यह विदेशी कुंजी का समर्थन नहीं करता है। InnoDB एक और स्टोरेज इंजन है जो विदेशी कुंजी का समर्थन करता है। आपको ENGINE = InnoDB निर्दिष्ट करना होगा क्योंकि MySQL डिफ़ॉल्ट रूप से MyISAM का उपयोग करेगा।
हटाना कैस्केड पर किसी तालिका में सभी पंक्तियाँ एक महत्वपूर्ण यह है कि हटा दी जाती है का संदर्भ देता है एक विदेशी कुंजी है को नष्ट करेगा। मुझे लगता है कि यह खतरनाक है और विदेशी कुंजी प्रतिबंध के उद्देश्य का एक बहुत को हरा देता है तो मैं इसके उपयोग से बचने होगा, लेकिन यह सिर्फ मेरी व्यक्तिगत राय है।
आप कहते हैं:
+-------+-------+
| ordID | proID |
+-------+-------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
+-------+-------+
और OrdersItems पर यह विदेशी कुँजी (proID
) को हटाना CASCADE के संदर्भों पर उत्पाद (proID
)।
तो अगर किसी को
DELETE FROM Products WHERE proID = 2
फिर ordID 4 और 5 के साथ पंक्तियों भी हटा दिया जाएगा (यह झरने) चलाता है।
स्रोत
2010-10-10 06:22:59
तो क्या मैं कैस्केड का उपयोग करता हूं या नहीं? क्या अद्यतन –
पर के बारे में मैं न तो प्रयोग करेंगे। चाहे आप उनका उपयोग करना चाहते हैं, फिर भी आप पर निर्भर हैं। मैं आपका निर्णय लेने से पहले पूरी तरह से MySQL API में उन्हें पढ़ने का सुझाव देता हूं: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html –