AUTO_INCREMENT होने के लिए MySQL कॉलम को Alter करें


194

मैं AUTO_INCREMENTइस तथ्य के बाद अपनी प्राथमिक कुंजी कॉलम बनाने के लिए एक तालिका को संशोधित करने की कोशिश कर रहा हूं । मैंने निम्न एसक्यूएल की कोशिश की है, लेकिन एक सिंटैक्स त्रुटि सूचना मिली है।

ALTER TABLE document
ALTER COLUMN document_id AUTO_INCREMENT

क्या मैं कुछ गलत कर रहा हूं या यह संभव नहीं है?

+ -------------------- +
| संस्करण () |
+ -------------------- +
| 5.0.75-0ubuntu10.2 |
+ -------------------- +

जवाबों:


379
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

3
मैं उत्सुक हूं कि आप INT (4) का सुझाव क्यों देंगे। कोई खास वजह?
स्टीवन ऑक्सले

3
@Steven Oxley क्योंकि मैंने अपनी तालिका इस तरह घोषित की।
सी। रोस

30
कोष्ठक के बीच एक संख्या निर्दिष्ट करना MySQL पूर्णांक प्रकारों के लिए वास्तव में कुछ भी नहीं (ठीक है, लगभग कुछ भी नहीं) करता है। केवल एक चीज जो संख्या से प्रभावित हो सकती है वह है प्रदर्शन चौड़ाई, और यह ग्राहक के ऊपर है कि वह ऐसा करे। लेकिन धोखा न खाएं और सोचें कि यह वैसा ही काम करता है जैसे कि वर्च और डेमिकल प्रकार - उन मामलों में, आपके द्वारा स्टोर किए जा सकने वाले डेटा की मात्रा वास्तव में निर्दिष्ट होती है, जबकि INT का एक विशेष स्वाद हमेशा सटीक भंडारण की अनुमति देता है मूल्यों की एक ही श्रेणी
रोलैंड बोमन

इस ऑपरेशन को करते समय मुझे हमेशा एक प्राथमिक कुंजी त्रुटि मिलती है, इसलिए मेरे पास यही है जो मैं करता हूं: SET FOREIGN_KEY_CHECKS = 0; अन्य टेबल दस्तावेज़ DROP प्राथमिक कुंजी; वैकल्पिक तालिका दस्तावेज़ मोड COLUMN document_id INT प्राथमिक कुंजी AUTO_INCREMENT नहीं है; SET FOREIGN_KEY_CHECKS = 1;
फर्नांडो

यह MySQL में काम नहीं करता है क्योंकि आपको कॉलम को एक प्राथमिक कुंजी के रूप में सेट करने की आवश्यकता है क्योंकि केवल एक कॉलम को auto_increment होने की अनुमति है ( नीचे रोलैंड बोमन का जवाब
charlchad

74

रोमन सही है, लेकिन ध्यान दें कि auto_increment कॉलम PRIMARY KEY या UNIQUE KEY का हिस्सा होना चाहिए (और लगभग 100% मामलों में, यह एकमात्र कॉलम होना चाहिए जो PRIMARY KEY बनाता है):

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY

10
+1। यदि टेबल निर्माण के समय परिभाषित न हो तो प्राथमिक कुंजी आवश्यक है।

1
इसके अलावा इसका मतलब यह है कि उस कॉलम में डेटा पहले से ही अद्वितीय होने की आवश्यकता है
उमैर मल्ही

10

मेरे मामले में यह केवल तब काम किया जब मैंने इसे रखा not null। मुझे लगता है कि यह एक अड़चन है।

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

7

ऐसा करने के लिए SQL होगा:

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

आपके SQL काम न करने के कुछ कारण हो सकते हैं। सबसे पहले, आपको डेटा प्रकार ( INTइस मामले में) को फिर से निर्दिष्ट करना होगा । इसके अलावा, आप जिस कॉलम को बदलने की कोशिश कर रहे हैं, उसे अनुक्रमित किया जाना चाहिए (इसमें प्राथमिक कुंजी नहीं होनी चाहिए, लेकिन आमतौर पर यही आप चाहते हैं)। इसके अलावा, AUTO_INCREMENTप्रत्येक तालिका के लिए केवल एक कॉलम हो सकता है । तो, आप निम्न SQL चलाने की इच्छा कर सकते हैं (यदि आपका कॉलम अनुक्रमित नहीं है):

ALTER TABLE `document` MODIFY `document_id` INT AUTO_INCREMENT PRIMARY KEY;

आप अधिक जानकारी MySQL प्रलेखन में पा सकते हैं: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html संशोधित स्तंभ वाक्यविन्यास और http://dev.mysql.com/doc के लिए कॉलम निर्दिष्ट करने के बारे में अधिक जानकारी के लिए /refman/5.1/en/create-table.html


6

आपको auto_incrementनिर्देश के पहले कॉलम का प्रकार निर्दिष्ट करना होगा , अर्थात ALTER TABLE document MODIFY COLUMN document_id INT AUTO_INCREMENT


1
यह होना चाहिएMODIFY COLUMN
shxfee

5

AUTO_INCREMENT स्तंभ के डेटाटाइप का एक हिस्सा है, आपको फिर से कॉलम के लिए पूर्ण डेटाटाइप को परिभाषित करना होगा:

ALTER TABLE document
ALTER COLUMN document_id int AUTO_INCREMENT

( intउदाहरण के रूप में लिया गया है, आपको इसे उस प्रकार पर सेट करना चाहिए जो स्तंभ ने पहले किया था)


3

आप इसे इस तरह से कर सकते हैं:

 alter table [table_name] modify column [column_name] [column_type] AUTO_INCREMENT;

यह अन्य सभी उत्तरों का सिर्फ एक दोहराव लगता है।
पैंग

2

AUTO_INCREMENT स्तंभ के डेटाटाइप का एक हिस्सा है, आपको फिर से कॉलम के लिए पूर्ण डेटाटाइप को परिभाषित करना होगा:

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT

(उदाहरण के रूप में लिया गया इंट, आपको इसे उस प्रकार पर सेट करना चाहिए जो कॉलम में पहले था)


2

स्वचालित रूप से वेतन वृद्धि के लिए document_id बनाने के लिए आप निम्न क्वेरी का उपयोग कर सकते हैं

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment

डॉक्यूमेंट_ड प्राइमरी की को भी बनाना पसंद किया जाता है

ALTER TABLE document MODIFY COLUMN document_id INT auto_increment PRIMARY KEY;

1
ध्यान दें कि यदि वह कॉलम पहले से ही एक प्राथमिक कुंजी है, तो आप इसे फिर से घोषित नहीं कर सकते हैं क्योंकि यह कई प्राथमिक कुंजी के बारे में त्रुटि देता है (आप उम्मीद करेंगे कि यह थोड़ा और अधिक चतुर हो और देखें कि यह वही प्राथमिक कुंजी है जो मुझे लगता है) । तो उस स्थिति में आप सिर्फ प्राथमिक कुंजी छोड़ें और यह उस कॉलम पर मौजूदा प्राथमिक कुंजी सेटिंग को प्रभावित नहीं करता है
जॉर्ज बिरबिलिस

2

नीचे बयान काम करता है। ध्यान दें कि आपको कॉलम नाम के लिए डेटा प्रकार का फिर से उल्लेख करने की आवश्यकता है (कॉलम से पहले डेटा प्रकार फिर से लिखें)।

ALTER TABLE document
MODIFY COLUMN document_id int AUTO_INCREMENT;

2

यदि उपरोक्त कार्यों में से कोई भी यह कोशिश नहीं करता है। यह मैंने MYSQL में किया और हां, आपको दो बार कॉलम नाम (document_id) लिखने की आवश्यकता है।

ALTER TABLE document
CHANGE COLUMN document_id document_id INT(11) NOT NULL AUTO_INCREMENT ;

1

Mysql में कॉलम को संशोधित करने के लिए हम परिवर्तन का उपयोग करते हैं और कीवर्ड को संशोधित करते हैं। मान लीजिए कि हमने एक तालिका बनाई है जैसे:

create table emp(
    id varchar(20),
    ename varchar(20),
    salary float
);

अब हम कॉलम वृद्धि के प्रकार को स्वतः वृद्धि के साथ पूर्णांक में बदलना चाहते हैं। आप ऐसा एक आदेश के साथ कर सकते हैं:

alter table emp modify column id int(10) auto_increment;

1

पिछला तालिका सिंटैक्स:

CREATE TABLE apim_log_request (TransactionId varchar(50) DEFAULT NULL);

TransactionId को ऑटो इंक्रीमेंट में बदलने के लिए इस क्वेरी का उपयोग करें

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment;


1

सिर्फ इस तरह:

alter table document modify column id int(11) auto_increment;


0

जैसा कि आप कॉलम को फिर से परिभाषित कर रहे हैं, आपको डेटापाइप को फिर से निर्दिष्ट करना होगा और इसमें ऑटो_साइनमेंट जोड़ना होगा क्योंकि यह डेटाटाइप का एक हिस्सा है।

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT;

0

एक ही समय में प्राथमिक कुंजी और auto_increment के रूप में कॉलम सेट करना:

  mysql> ALTER TABLE persons MODIFY COLUMN personID INT auto_increment PRIMARY KEY;
    Query OK, 10 rows affected (0.77 sec)
    Records: 10  Duplicates: 0  Warnings: 0

    mysql>


-3

निम्नलिखित प्रश्नों का उपयोग करें:

ALTER TABLE YourTable DROP COLUMN IDCol

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.