हां, एक विदेशी कुंजी एक प्रकार की बाधा है। MySQL के पास बाधाओं के लिए असमान समर्थन है:
PRIMARY KEY:हाँ तालिका बाधा और स्तंभ बाधा के रूप में।FOREIGN KEY:हाँ टेबल की कमी के रूप में, लेकिन केवल InnoDB और BDB स्टोरेज इंजन के साथ; अन्यथा पार्स किया गया लेकिन अनदेखा किया गया।CHECK:सभी स्टोरेज इंजनों में पार्स किया गया लेकिन अनदेखा किया गया।UNIQUE:हाँ तालिका बाधा और स्तंभ बाधा के रूप में।NOT NULL:हाँ स्तंभ बाधा के रूप में।DEFERRABLEऔर अन्य बाधा विशेषताएँ:कोई समर्थन नहीं।
CONSTRAINT क्लॉज आपको बाधा को स्पष्ट रूप से नाम देने की अनुमति देता है, या तो मेटाडेटा को अधिक पठनीय बनाने के लिए या फिर नाम का उपयोग करने के लिए जब आप बाधा को छोड़ना चाहते हैं। SQL मानक के लिए आवश्यक है कि CONSTRAINT खंड वैकल्पिक है। यदि आप इसे छोड़ देते हैं, तो RDBMS स्वचालित रूप से एक नाम बनाता है, और नाम कार्यान्वयन पर निर्भर करता है।