फॉरेन कीज़ एक प्रकार का कंस्ट्रेंट है जिसका उपयोग टेबल्स के बीच इंटीग्रिटी बनाए रखने के लिए किया जाता है। यदि हम किसी टेबल के लिए फॉरेन की बनाते हैं, तो इस टेबल को चाइल्ड टेबल कहा जाता है जबकि दूसरी टेबल को पैरेंट टेबल कहा जाएगा।
पैरेंट टेबल में, फॉरेन की प्राइमरी की के रूप में कार्य करेगी। आइए एक टेबल बनाते हैं।
चाइल्ड टेबल बनाना।
mysql> create table StudentEnrollment -> ( -> StudentId int, -> StudentName varchar(200), -> StudentFKPK int -> ); Query OK, 0 rows affected (0.91 sec)
पैरेंट टेबल बनाना
mysql> create table College -> ( -> StudentFKPK int, -> CourseId int, -> CourseName varchar(200), -> CollegeName varchar(200), -> primary key(StudentFKPK) -> ); Query OK, 0 rows affected (0.46 sec)
पैरेंट टेबल में, कॉलम 'StudentFKPK' प्राइमरी की है। हम फॉरेन की जोड़ने के लिए ALTER कमांड का उपयोग करेंगे।
फॉरेन की जोड़ने का सिंटैक्स निम्न है।
ALTER TABLE yourChildTableName ADD CONSTRAINT anyConstraintName FOREIGN KEY(primary key column name for parent table) REFERENCES College(primary key column name for parent table);
उपरोक्त सिंटैक्स का निम्न क्वेरी में इम्प्लीमेंटेशन है।
mysql> alter table StudentEnrollment add constraint StudCollegeConst foreign key(StudentFKPK) references College(StudentFKPK); Query OK, 0 rows affected (1.78 sec) Records: 0 Duplicates: 0 Warnings: 0
चेक करने का सिंटैक्स कि फॉरेन की कंस्ट्रेंट मौजूद है।
SELECT TABLE_NAME, COLUMN_NAME, CONSTRAINT_NAME, REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE REFERENCED_TABLE_NAME = 'yourParentTableName or your referencedTableName';
उपरोक्त सिंटैक्स को निम्न क्वेरी में इम्प्लीमेंट किया गया है।
mysql> SELECT -> TABLE_NAME, -> COLUMN_NAME, -> CONSTRAINT_NAME, -> REFERENCED_TABLE_NAME, -> REFERENCED_COLUMN_NAME -> FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE -> WHERE -> REFERENCED_TABLE_NAME = 'College';
आउटपुट यहाँ है।
+-------------------+-------------+------------------+-----------------------+------------------------+ | TABLE_NAME | COLUMN_NAME | CONSTRAINT_NAME | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME | +-------------------+-------------+------------------+-----------------------+------------------------+ | StudentEnrollment | StudentFKPK | StudCollegeConst | College | StudentFKPK | +-------------------+-------------+------------------+-----------------------+------------------------+ 1 row in set, 2 warnings (0.03 sec)
हमारे पास StudentFKPK नाम का एक कॉलम है और CONSTRAINT_NAME StudCollegeConst है।