2010-01-30 14 views
142

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

ALTER TABLE document 
ALTER COLUMN document_id AUTO_INCREMENT 

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

 
+--------------------+ 
| VERSION()   | 
+--------------------+ 
| 5.0.75-0ubuntu10.2 | 
+--------------------+ 

उत्तर

274
ALTER TABLE document MODIFY COLUMN document_id INT auto_increment 
+3

मुझे उत्सुकता है कि आप आईएनटी (4) का सुझाव क्यों देंगे। कोई विशेष कारण? –

+2

@ स्टेवेन ऑक्सले क्योंकि मैंने अपनी मेज को इस तरह घोषित किया था। –

+27

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

3

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

ALTER TABLE document 
ALTER COLUMN document_id int AUTO_INCREMENT 

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

4

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

+1

यह 'संशोधित कॉलम' – shxfee

58

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

ALTER TABLE document MODIFY document_id INT AUTO_INCREMENT PRIMARY KEY 
+9

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

4

एसक्यूएल करने के लिए इस होगा:

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

कारण है कि अपने एसक्यूएल काम नहीं कर सकते की एक जोड़ी रहे हैं। सबसे पहले, आपको इस मामले में डेटा प्रकार (INT) को फिर से निर्दिष्ट करना होगा। साथ ही, जिस कॉलम को आप बदलने की कोशिश कर रहे हैं उसे अनुक्रमित किया जाना चाहिए (यह प्राथमिक कुंजी नहीं है, लेकिन आमतौर पर वह वही है जो आप चाहते हैं)। इसके अलावा, प्रत्येक तालिका के लिए केवल एक AUTO_INCREMENT कॉलम हो सकता है। निर्दिष्ट करने के कॉलम के बारे में अधिक जानकारी के लिए संशोधित स्तंभ वाक्य रचना के लिए http://dev.mysql.com/doc/refman/5.1/en/alter-table.html और http://dev.mysql.com/doc/refman/5.1/en/create-table.html: तो, आप निम्नलिखित एसक्यूएल को चलाने के लिए (यदि आपके स्तंभ अनुक्रमित नहीं है) चाह सकते हैं:

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

आप MySQL दस्तावेज में अधिक जानकारी प्राप्त कर सकते हैं ।

2

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

ALTER TABLE document 
MODIFY COLUMN document_id int AUTO_INCREMENT 

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

2

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

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

नीचे कथन कार्य करता है। ध्यान दें कि आप स्तंभ नाम

ALTER TABLE document 
MODIFY COLUMN document_id int AUTO_INCREMENT; 
4

मेरे मामले में यह केवल काम किया जब मैं अशक्त नहीं डाल के लिए फिर से डेटा प्रकार का उल्लेख करने की जरूरत है। मुझे लगता है कि यह एक बाधा है।

ALTER TABLE document MODIFY COLUMN document_id INT NOT NULL AUTO_INCREMENT;

0

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

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

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

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

बदलने तालिका tbl_user संशोधित स्तंभ आईडी पूर्णांक (10) auto_increment;

-3

उपयोग निम्नलिखित प्रश्न:

ALTER TABLE YourTable DROP COLUMN IDCol 

ALTER TABLE YourTable ADD IDCol INT IDENTITY(1,1) 
0

पिछला टेबल वाक्य रचना:

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

ऑटो वेतन वृद्धि उपयोग करने के लिए इस क्वेरी

ALTER TABLE apim_log_request MODIFY COLUMN TransactionId INT auto_increment; 
-1

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

ALTER TABLE `document` MODIFY COLUMN `document_id` INT AUTO_INCREMENT; 
संबंधित मुद्दे