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

MySQL में AUTO_INCREMENT कॉलम से PRIMARY KEY हटाने का परिणाम

MySQL में AUTO_INCREMENT कॉलम पर PRIMARY KEY कंस्ट्रेंट अनिवार्य है। यदि आप AUTO_INCREMENT कॉलम से PRIMARY KEY हटाने का प्रयास करते हैं, तो MySQL एरर देता है।

उदाहरण

Accounts टेबल में Sr कॉलम AUTO_INCREMENT और PRIMARY KEY दोनों है:

mysql> DESCRIBE accounts;
+--------+-------------+------+-----+---------+----------------+
| Field  | Type        | Null | Key | Default | Extra          |
+--------+-------------+------+-----+---------+----------------+
| Sr     | int(10)     | NO   | PRI | NULL    | auto_increment |
| Name   | varchar(20) | YES  |     | NULL    |                |
| amount | int(15)     | YES  |     | NULL    |                |
+--------+-------------+------+-----+---------+----------------+

PRIMARY KEY हटाने का प्रयास

mysql> ALTER TABLE Accounts DROP PRIMARY KEY;
ERROR 1075 (42000): Incorrect table definition; 
there can be only one auto column and it must be defined as a key

एरर विश्लेषण

एरर कोडसंदेशअर्थ
1075Incorrect table definition; there can be only one auto column and it must be defined as a keyAUTO_INCREMENT कॉलम KEY (PRIMARY/UNIQUE) होना चाहिए

क्यों यह प्रतिबंध है?

  • AUTO_INCREMENT के लिए अद्वितीय मान उत्पन्न करने के लिए इंडेक्स आवश्यक है
  • PRIMARY KEY या UNIQUE इंडेक्स के बिना डुप्लिकेट चेक संभव नहीं
  • InnoDB में AUTO_INCREMENT कॉलम इंडेक्स का पहला कॉलम होना चाहिए

समाधान: क्रम बदलें

यदि PRIMARY KEY बदलना है:

-- 1. पहले AUTO_INCREMENT हटाएं
ALTER TABLE Accounts MODIFY Sr INT NOT NULL;

-- 2. फिर PRIMARY KEY हटाएं
ALTER TABLE Accounts DROP PRIMARY KEY;

-- 3. नया PRIMARY KEY बनाएं
ALTER TABLE Accounts ADD PRIMARY KEY (Name);  -- उदाहरण

-- 4. यदि नए कॉलम पर AUTO_INCREMENT चाहिए
ALTER TABLE Accounts MODIFY NewCol INT NOT NULL AUTO_INCREMENT PRIMARY KEY;

सारांश

AUTO_INCREMENT कॉलम से PRIMARY KEY सीधे नहीं हटा सकते। पहले AUTO_INCREMENT हटाएं, फिर PRIMARY KEY।

  1. - MySQL टेबल से प्राइमरी की हटाना - DROP PRIMARY KEY

    MySQL में किसी टेबल से प्राइमरी की को हटाने के लिए ALTER TABLE ... DROP PRIMARY KEY स्टेटमेंट का उपयोग किया जाता है। यह ऑपरेशन टेबल संरचना को संशोधित करता है लेकिन डेटा को प्रभावित नहीं करता। सिंटैक्स ALTER TABLE your_table_name DROP PRIMARY KEY; व्यावहारिक उदाहरण 1. प्राइमरी की के साथ टेबल बनाएं

  1. - MySQL में प्राइमरी की कैसे ड्रॉप करें?

    प्राइमरी की ड्रॉप करने के लिए, पहले ALTER का उपयोग करके टेबल को बदलें। इसके साथ, नीचे दिखाए अनुसार की ड्रॉप करने के लिए DROP का उपयोग करें: सिंटैक्स alter table yourTableName drop primary key; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable -> ( -> StudentId int NOT NULL, -> S

  1. - MySQL में कॉलम मानों से बेतरतीब ढंग से 2 मान चुनें?

    बेतरतीब ढंग से चुनने के लिए ORDER BY RAND() का उपयोग करें। MySQL में केवल 2 मान चुनने के लिए LIMIT 2 का उपयोग करें। आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1815 ( Question text ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: my