विदेशी कुंजी एक प्रकार की बाधा है जिसका उपयोग तालिकाओं के बीच अखंडता बनाए रखने के लिए किया जा सकता है। यदि हम किसी तालिका के लिए एक विदेशी कुंजी बनाते हैं, तो इस तालिका को चाइल्ड टेबल कहा जाता है जबकि दूसरी तालिका को पैरेंट टेबल कहा जाता है।
मूल तालिका में, विदेशी कुंजी प्राथमिक कुंजी के रूप में कार्य करेगी। चलिए एक टेबल बनाते हैं।
चाइल्ड टेबल बनाना।
mysql> टेबल बनाएं StudentEnrollment -> ( -> StudentId int, -> StudentName varchar(200), -> StudentFKPK int -> );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.91 सेकंड)
पैरेंट टेबल बनाना
mysql> टेबल बनाएं कॉलेज -> (-> StudentFKPK int, -> CourseId int, -> CourseName varchar(200), -> CollegeName varchar(200), -> Primary key(StudentFKPK) -> );क्वेरी ओके , 0 पंक्तियाँ प्रभावित (0.46 सेकंड)
पैरेंट टेबल में, 'StudentFKPK' कॉलम एक प्राथमिक कुंजी है। हम विदेशी कुंजी जोड़ने के लिए ALTER कमांड का उपयोग करेंगे।
विदेशी कुंजी जोड़ने के लिए सिंटैक्स निम्नलिखित है।
तालिका बदलें yourChildTableName कोई भी बाधा जोड़ेंConstraintNameविदेशी कुंजी (पैरेंट टेबल के लिए प्राथमिक कुंजी कॉलम नाम) संदर्भ कॉलेज (पैरेंट टेबल के लिए प्राथमिक कुंजी कॉलम नाम);
नीचे दी गई क्वेरी में उपरोक्त सिंटैक्स का कार्यान्वयन निम्नलिखित है।
mysql> तालिका बदलें छात्र नामांकन बाधा जोड़ें StudCollegeConst विदेशी कुंजी (StudentFKPK) संदर्भ कॉलेज (छात्रFKPK); क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (1.78 सेकंड) रिकॉर्ड:0 डुप्लिकेट:0 चेतावनियाँ:0
विदेशी कुंजी बाधा मौजूद है या नहीं यह जांचने के लिए सिंटेक्स।
INFORMATION_SCHEMA से TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NA का चयन करें।ऊपर दिए गए सिंटैक्स को नीचे दी गई क्वेरी में लागू किया गया है।
mysql> चुनें -> TABLE_NAME, -> COLUMN_NAME, -> CONSTRAINT_NAME, -> REFERENCED_TABLE_NAME, -> REFERENCED_COLUMN_NAME -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -> WHERE -> REFERENCED_TABLE_NAME ='कॉलेज'यहाँ आउटपुट है।
<पूर्व>+---------------------+----------------+--------------- ------+---------------+---------------------------- -----+| TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |+---------------------+---------------+------------- -----+--------------------------+--------------- ----+| छात्र नामांकन | छात्रएफकेपीके | स्टडकॉलेजकॉन्स्ट | कॉलेज | छात्रएफकेपीके |+-------------------+----------------+--------------- -----+--------------------------+--------------- ----+1 पंक्ति सेट में, 2 चेतावनियां (0.03 सेकंड)हमारे पास StudentFKPK नाम का एक कॉलम है और CONSTRAINT_NAME StudCollegeConst है।