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

MySQL में एकाधिक कॉलम पर PRIMARY KEY सेट करना (कंपोजिट PK)

MySQL एक टेबल पर एकाधिक कॉलम को मिलाकर PRIMARY KEY (कंपोजिट/संयुक्त प्राइमरी की) बनाने की अनुमति देता है। इसका लाभ यह है कि उन कॉलम को एक इकाई के रूप में माना जाता है।

उदाहरण: कंपोजिट PRIMARY KEY बनाना

mysql> CREATE TABLE allotment(
    RollNo INT,
    Name VARCHAR(20),
    RoomNo INT,
    PRIMARY KEY(RollNo, RoomNo)
);
Query OK, 0 rows affected (0.23 sec)

mysql> DESCRIBE allotment;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| RollNo | int(11)     | NO   | PRI | 0       |       |
| Name   | varchar(20) | YES  |     | NULL    |       |
| RoomNo | int(11)     | NO   | PRI | 0       |       |
+--------+-------------+------+-----+---------+-------+

कंपोजिट PK का व्यवहार

  • दोनों कॉलम मिलकर एक अद्वितीय पहचान बनाते हैं
  • व्यक्तिगत कॉलम में डुप्लिकेट हो सकते हैं, लेकिन संयोजन अद्वितीय होना चाहिए
  • दोनों कॉलम NOT NULL हो जाते हैं

डुप्लिकेट संयोजन पर एरर

mysql> INSERT INTO allotment VALUES
    (1, 'Aarav', 201),
    (2, 'Harshit', 201),
    (1, 'Rahul', 201);  -- RollNo=1, RoomNo=201 पहले से मौजूद है
ERROR 1062 (23000): Duplicate entry '1-201' for key 'PRIMARY'

मौजूदा टेबल पर कंपोजिट PK जोड़ना

ALTER TABLE table_name ADD PRIMARY KEY (col1, col2);

कंपोजिट PK हटाना

ALTER TABLE table_name DROP PRIMARY KEY;

उपयोग के मामले

  • जंक्शन टेबल (Many-to-Many रिलेशनशिप)
  • कंपोजिट पहचानकर्ता (जैसे: OrderID + LineItem)
  • प्राकृतिक कुंजी जब कोई सिंगल कॉलम अद्वितीय नहीं

नोट: कंपोजिट PK वाले टेबल को रेफरेंस करने वाले FOREIGN KEY में भी समान कॉलम संख्या होनी चाहिए।

  1. - MySQL में एकाधिक कॉलम वाली टेबल में शर्तें कैसे बनाएं?

    MySQL में IF() फ़ंक्शन का उपयोग करके एकाधिक कॉलम पर शर्तीय तर्क लागू करना MySQL में IF() फ़ंक्शन का उपयोग करके क्वेरी स्तर पर शर्तीय तर्क लागू कर सकते हैं। यह तीन तर्क लेता है: शर्त, सत्य मान, असत्य मान। वाक्यविन्यास IF(condition, true_value, false_value) उदाहरण के साथ पूर्ण कार्यान्वयन टेबल बनान

  1. - MySQL में INFORMATION_SCHEMA से संयुक्त प्राथमिक कुंजी (Composite Primary Key) पहचानें

    MySQL में किसी टेबल में संयुक्त प्राथमिक कुंजी (Composite Primary Key - एकाधिक कॉलम वाली PK) है या नहीं, यह जांचने के लिए INFORMATION_SCHEMA.KEY_COLUMN_USAGE टेबल को क्वेरी करें और कॉलम गिनें। यदि गिनती 1 से अधिक है, तो संयुक्त PK है। सिंटैक्स SELECT COUNT(*) AS Total FROM INFORMATION_SCHEMA.KEY_CO

  1. - MySQL में प्राइमरी की को कई टेबल में फॉरेन की के रूप में कैसे रेफ़र करें?

    ALTER TABLE ... ADD CONSTRAINT alter table yourSecondTableName add constraint `yourConstraintName` foreign key(`yourSecondTableNamePrimaryKey`) references yourFirstTableName(yourFirstTablePrimaryKeyColumnName); उदाहरण alter table demo66 add constraint `id_fk` foreign key(`user_id`) references