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

एकाधिक कॉलम पर FOREIGN KEY कंस्ट्रेन्ट कैसे लागू करें?


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)

और हमारे पास 'orders1' टेबल है जिसमें पहले से ही 'Cust_id' फील्ड पर फॉरेन की कंस्ट्रेन्ट है जो पेरेंट टेबल 'customer' को रेफर करती है।

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 क्वेरी की मदद से हम 'cust_unq_id' फील्ड पर एक और फॉरेन की कंस्ट्रेन्ट जोड़ सकते हैं जो पेरेंट टेबल 'customer2' को रेफर करती है:

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 में UNION ALL का उपयोग करके एकाधिक टेबल के कॉलम का योग करना

    समाधान: UNION ALL के साथ उपक्वेरी एकाधिक टेबल के समान कॉलम का कुल योग प्राप्त करने के लिए UNION ALL का उपयोग करके डेटा संयोजित करें, फिर बाहरी क्वेरी में SUM() लागू करें। सिंटैक्स SELECT SUM(tbl.columnName) AS TotalSum FROM ( SELECT columnName FROM table1 UNION ALL SELECT columnName FRO

  1. - MySQL में टेबल के कॉलम नाम कैसे प्राप्त करें?

    SHOW COLUMNS कमांड का उपयोग MySQL में किसी टेबल के सभी कॉलम नाम और उनकी जानकारी देखने के लिए SHOW COLUMNS कमांड का उपयोग करें। सिंटैक्स SHOW COLUMNS FROM yourTableName; उदाहरण 1. टेबल बनाना CREATE TABLE DemoTable ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentFirstName VARCH

  1. - MySQL डेटाबेस में फॉरेन की कैसे पहचानें?

    MySQL में SHOW CREATE TABLE का उपयोग करके फॉरेन की कंस्ट्रेंट पहचानना किसी टेबल पर परिभाषित फॉरेन की कंस्ट्रेंट देखने के लिए SHOW CREATE TABLE कमांड का उपयोग करें। यह पूरी टेबल परिभाषा दिखाता है जिसमें फॉरेन की विवरण शामिल होते हैं। उदाहरण के साथ पूर्ण कार्यान्वयन पैरेंट टेबल बनाना CREATE TABLE D