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