2010-06-22 10 views
17

हटाएं मैं अपनी mysql डीबी तालिका को एक आईडी (ऑटो) से एक यूआईडी में बदल रहा हूं।mysql, कॉलम को प्राथमिक कुंजी और ऑटो incremement

ALTER TABLE companies DROP PRIMARY KEY; 
ALTER TABLE companies ADD PRIMARY KEY (`uuid`); 

यह .. त्रुटि मैं मिलता है

[SQL] ALTER TABLE companies DROP PRIMARY KEY; 
[Err] 1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key 

कौन सा मैं समझता हूँ, मैं क्योंकि मैं प्राथमिक कुंजी के रूप में यह ड्रॉप एक गैर autoincrement करने के लिए आईडी बदलने की जरूरत है।? प्राथमिक कुंजी और ऑटो वृद्धि को हटाने के लिए कॉलम बदलने के लिए वाक्यविन्यास क्या है?

ALTER TABLE companies change id id ?????????? int(11) 

उत्तर

24

आप ऑटो वेतन वृद्धि और एक एकल एसक्यूएल बयान में id स्तंभ से प्राथमिक कुंजी को दूर करने की जरूरत है, इस करना चाहिए:

ALTER TABLE companies DROP PRIMARY KEY, CHANGE id id int(11); 

वास्तव में, तुम क्या करने में सक्षम होना चाहिए एक भी ALTER TABLE क्वेरी में सब कुछ:

ALTER TABLE companies 
DROP PRIMARY KEY, 
CHANGE id id int(11), 
ADD PRIMARY KEY (uuid); 
+0

यदि मैं इसे 3 कथन के रूप में करता हूं तो यह काम करेगा .. वैकल्पिक तालिका कंपनियां आईडी आईडी int (11) बदलती हैं; वैकल्पिक तालिका कंपनियां प्राथमिक कुंजी कुंजी; वैकल्पिक तालिका कंपनियां प्राथमिक कुंजी जोड़ें (यूयूआईडी); – Brett

+1

मेरी स्थिति में, मैं केवल ऑटो-वृद्धि को छोड़ना चाहता हूं। मैंने यह कोशिश की: 'वैकल्पिक तालिका myTable चेंज _id _id INT (12) 'लेकिन यह" चेंज के पास वाक्यविन्यास त्रुटि "कहता है। मुझसे यहां क्या गलत हो रहा है? –

2

निकालें ऑटो वेतन वृद्धि के लिए क्वेरी है:

alter table companies DROP PRIMARY KEY, 
change id id int(11) NOT NULL 

अब आप तालिका की संरचना ऑटो वृद्धि के बिना देख सकते हैं।

आप प्राथमिक कुंजी एक और स्तंभ जोड़ने के लिए चाहते हैं, तो इस क्वेरी

alter table companies add PRIMARY KEY(uuid) 

का उपयोग आप ऑटो वेतन वृद्धि, प्राथमिक कुंजी ड्रॉप और एक ही क्वेरी में नया स्तंभ के लिए प्राथमिक कुंजी जोड़ना चाहते हैं, तो का उपयोग इस क्वेरी

alter table comapnies DROP PRIMARY KEY, 
    change id id int(11) NOT NULL, 
    add PRIMARY KEY(uuid) 
4

आप स्तंभ का नाम नहीं बदल रहे हैं जब आप उपयोग कर सकते हैं MODIFY:

ALTER TABLE `companies` MODIFY `id` int(11), 
          DROP PRIMARY KEY, 
        ADD PRIMARY KEY (`uuid`); 

यह सब एक बदले में कथन में करके इसे परमाणु के रूप में भी माना जाता है, इसलिए प्रश्नों के बीच असंगतता (पंक्ति में एकाधिक कथन चलाने के विपरीत) का कोई मौका नहीं है।

संबंधित मुद्दे