आइए समझें कि MySQL कैसे बाधाओं से निपटता है -
MySQL हमें ट्रांजेक्शनल टेबल (जो रोलबैक की अनुमति देता है) और गैर-लेन-देन टेबल (जो रोलबैक की अनुमति नहीं देता) के साथ काम करने में मदद करता है। यही कारण है कि अन्य डीबीएमएस की तुलना में MySQL में बाधाओं को संभालना अलग है। गैर-लेनदेन डेटाबेस में, यदि कई पंक्तियों को सम्मिलित या अद्यतन करते समय कोई त्रुटि होती है, तो इसे वापस नहीं किया जा सकता है। इस मामले को सही तरीके से हैंडल करना होगा।
MySQL सर्वर प्रश्नों के लिए एक त्रुटि उत्पन्न करता है, जिसे यह त्रुटियों के रूप में पता लगाता है, जब एक कथन को पार्स करने की आवश्यकता होती है जिसे निष्पादित करने की आवश्यकता होती है। एक बार त्रुटि का पता चलने के बाद, यह स्टेटमेंट को निष्पादित करते समय त्रुटियों से उबरने का प्रयास करता है। यह अभी तक सभी कथनों के लिए नहीं किया गया है।
MySQL या तो बीच में स्टेटमेंट को रोक सकता है या उससे रिकवर कर सकता है और एरर होने पर जारी रख सकता है। डिफ़ॉल्ट रूप से, सर्वर इससे ठीक हो जाता है और जारी रहता है।
विदेशी कुंजियाँ सभी तालिकाओं के डेटा में क्रॉस-रेफ़रिंग की अनुमति देती हैं, और विदेशी कुंजी बाधाएँ यह सुनिश्चित करने में मदद करती हैं कि यह स्प्रेड-आउट डेटा सुसंगत बना रहे।
विदेशी कुंजी संदर्भ
MySQL ON UPDATE और ON DELETE विदेशी कुंजी संदर्भों को CREATE TABLE और ALTER TABLE स्टेटमेंट में सपोर्ट करता है।
संदर्भात्मक कार्रवाइयां
उपलब्ध रेफ़रेंशियल क्रियाएं हैं- प्रतिबंधित, कैस्केड, सेट न्यूल, और कोई कार्रवाई नहीं।
NO ACTION डिफ़ॉल्ट रेफ़रेंशियल एक्शन है।
ENUM
एक ENUM मान वह होना चाहिए जो कॉलम परिभाषा में सूचीबद्ध हो, या आंतरिक संख्यात्मक समकक्ष हो। मान एक त्रुटि मान (0 या खाली स्ट्रिंग) नहीं हो सकता। ENUM ('ए', 'बी', 'सी') के रूप में परिभाषित कॉलम के लिए, 'ए', 'बी', या 'के अलावा अन्य मान c', जैसे '', 'd', या 'ax' को अमान्य माना जाता है और अस्वीकार कर दिया जाता है।