Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

हम एक MySQL तालिका के एक से अधिक क्षेत्रों में विदेशी कुंजी बाधाओं को कैसे जोड़ सकते हैं?

<घंटा/>

MySQL हमें एक तालिका में एक से अधिक फ़ील्ड पर एक FOREIGN KEY बाधा जोड़ने की अनुमति देता है। शर्त यह है कि चाइल्ड टेबल में प्रत्येक विदेशी कुंजी को अलग-अलग पैरेंट टेबल को संदर्भित करना चाहिए।

उदाहरण

मान लीजिए कि हमारे पास एक तालिका 'customer2' है, जिसमें 'cust_unq_id' फ़ील्ड पर एक प्राथमिक कुंजी बाधा इस प्रकार है -

mysql> describe customer2;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| cust_id     | int(11)     | YES  |     | NULL    |       |
| First_name  | varchar(20) | YES  |     | NULL    |       |
| Last_name   | varchar(20) | YES  |     | NULL    |       |
| City        | varchar(10) | YES  |     | NULL    |       |
| cust_unq_id | int(11)     | NO   | PRI | 0       |       |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)

और हमारे पास एक टेबल ऑर्डर1 है जिसमें पहले से ही 'Cust_id' फ़ील्ड पर एक विदेशी कुंजी बाधा है जो मूल तालिका 'ग्राहक' को संदर्भित करती है।

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.04 sec)

अब, निम्नलिखित ALTER TABLE क्वेरी की सहायता से हम 'customer2' पैरेंट टेबल के संदर्भ में 'cust_unq_id' फ़ील्ड पर एक और विदेशी कुंजी बाधा जोड़ सकते हैं

mysql> Alter table orders1 add FOREIGN KEY(cust_unq_id) REFERENCES Customer2(Cust_unq_id);
Query OK, 0 rows affected (0.25 sec)
Records: 0  Duplicates: 0  Warnings: 0  

mysql> describe orders1;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| order_id     | int(11)     | NO   | PRI | NULL    |       |
| Product_name | varchar(25) | YES  |     | NULL    |       |
| orderdate    | date        | YES  |     | NULL    |       |
| Cust_id      | int(11)     | YES  | MUL | NULL    |       |
| cust_unq_id  | int(11)     | YES  | MUL | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.06 sec)

उपरोक्त परिणाम सेट से, यह देखा जा सकता है कि 'orders1' तालिका में दो हैं, एक 'cust_id' पर और दूसरी 'cust_unq_id' विदेशी कुंजी बाधाओं पर।


  1. MySQL डीबी में विदेशी कुंजी की पहचान कैसे करें?

    आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable1 (Id int NOT NULL PRIMARY KEY,EmployeeName varchar(100));क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.50 सेकंड) विदेशी कुंजी बाधाओं के साथ दूसरी तालिका बनाने की क्वेरी निम्नलिखित है - तालिका बनाएं DemoTable2 (Id int NOT NULL, StreetName varchar(100), CityName

  1. क्षेत्र प्रकार और विदेशी कुंजी बाधाओं को प्रदर्शित करने के लिए MySQL के लिए sp_help?

    MySQL में, आप SHOW CREATE कमांड की मदद से sp_help प्राप्त कर सकते हैं। केस 1 - तालिका के लिए, वाक्य रचना इस प्रकार है - अपनी तालिका का नाम दिखाएं; केस 2 - संग्रहीत कार्यविधि के लिए, वाक्य रचना इस प्रकार है - अपनी प्रक्रिया नाम बनाने की प्रक्रिया दिखाएं; आइए पहले एक टेबल बनाएं - टेबल बनाएं डेमो

  1. MySQL में विभिन्न तालिका में प्राथमिक कुंजी को विदेशी के रूप में कैसे संदर्भित करें?

    निम्नलिखित वाक्य रचना है - तालिका में बदलाव करें, yourSecondTableNameजोड़ें बाधा `yourConstraintName`विदेशी कुंजी(`yourSecondTableNamePrimaryKey`) संदर्भ yourFirstTableName(yourFirstTablePrimaryKeyColumnName); ऊपर दिए गए सिंटैक्स को समझने के लिए, आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ