2011-01-28 2 views
16

मेरे पास 38,000 रिकॉर्ड वाली एक तालिका है, लेकिन ID जैसे किसी भी ऑटो वृद्धि कॉलम के बिना।
अब मुझे ID कॉलम जोड़ना है, और मुझे आश्चर्य है कि परेशानी हो सकती है?तालिका के बाद एक नई आईडी (ऑटो वृद्धि) जोड़ने की समस्याएं

+0

क्या पहले से ही एक पूर्णांक आईडी कॉलम है जो आपकी पंक्तियों को विशिष्ट रूप से पहचानता है? – BoltClock

उत्तर

-3

किसी भी क्षेत्र में परिभाषा परिवर्तन के साथ समस्या यह है कि परिवर्तन "विनाशकारी" है। डेटा माइग्रेशन के रूप में इस तरह के बदलावों का इलाज करना सबसे अच्छा है। मैंने MySQL के साथ ऐसा नहीं किया है, लेकिन SQL सर्वर में ऑटो नंबरिंग जोड़नी है। मूल विचार वही है।

दस्तावेज़ीकरण की जांच करें, क्योंकि MySQL में फ़ील्ड को रीसेट किए बिना ऑटो वृद्धि जोड़ने के लिए एक तंत्र हो सकता है। यदि ऐसा है, तो एसक्यूएल के माध्यम से इसे करने से समस्या हल हो जाएगी। आम तौर पर, मैं एक उपकरण के साथ, इन प्रकार के परिवर्तनों को दृष्टि से करने के खिलाफ अनुशंसा करता हूं, क्योंकि अधिकांश उपकरण उनके मेथडोलॉजी में बहुत विनाशकारी होते हैं।

+1

बस phpMyAdmin के साथ नया फ़ील्ड जोड़ा गया, और सब ठीक है। Oredering अच्छी तरह से किया नहीं है, लेकिन यह महत्वपूर्ण नहीं है। धन्यवाद – Bobo

0

"क्या परेशानी हो सकती है?"

केवल रिकॉर्ड डालने में परेशानी हो सकती है। हालांकि ...

आम तौर पर, एक नया क्षेत्र जोड़ना आम तौर पर करने के लिए बहुत सुरक्षित है, भले ही यह एक ऑटो-वृद्धिशील कॉलम हो या नहीं। यह उन कॉलम को बदल रहा है या हटा रहा है जो आपको सभी कारणों के बारे में सुनिश्चित नहीं करते हैं, यदि आप सभी निर्भरताओं के बारे में सुनिश्चित नहीं हैं।

सुरक्षित होने के लिए, हालांकि, मैं इसे पहले एक प्रतिलिपि (परीक्षण) संस्करण पर आज़माउंगा और पहले सुरक्षित संस्करण के लिए अपने संस्करण को परीक्षण संस्करण के विरुद्ध चलाऊंगा। किसी भी तरह से कोई फर्क नहीं पड़ता कि परीक्षण पर्यावरण का उपयोग करना अच्छा अभ्यास है।

क्या आप इस बारे में अधिक विशिष्ट हो सकते हैं कि आप किस प्रकार की परेशानी के बारे में चिंतित हैं?

34

यदि आप अपनी तालिका दूसरों के साथ संबंध नहीं रखते हैं तो समस्या के बिना आप इसे जोड़ सकते हैं

आपको पुरानी प्राथमिक कुंजी को हटा देना होगा और तदनुसार तालिका अपलोड करना होगा (शायद पुरानी प्राथमिक कुंजी पर एक अद्वितीय अनुक्रमणिका जोड़ें)।

ऐसे ही आगे बढ़ें:

  • अपने डेटाबेस की एक डंप बनाने

  • निकालें कि

ALTER TABLE XXX DROP PRIMARY KEY 
  • तरह प्राथमिक कुंजी है कि जैसे नए स्तंभ जोड़ें
ALTER TABLE XXX add column Id INT NOT NULL AUTO_INCREMENT FIRST, ADD primary KEY Id(Id) 

तालिका देखी जाएगी और ऑटोइन अपडेट किया जाएगा।

7

यह समाधान है कि मैं MySQL Workbench के साथ करने की कोशिश की है:

ALTER TABLE `tableName` CHANGE COLUMN `id` `id` INT(11) NOT NULL AUTO_INCREMENT ; 

अगर यह सही तरीका है मैं नहीं जानता, लेकिन मैं अभी तक अपने जावा ईई आवेदन में किसी भी समस्या का नोटिस नहीं किया था।

+0

मुझे लगता है कि आईडी कुंजी का हिस्सा था अन्यथा यह त्रुटि देता है। – siddhusingh

21

यह आपके MySQL तालिका में एक ऑटो वेतन वृद्धि आईडी जोड़ देगा:

ALTER TABLE `your_table_name` ADD `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; 

अपनी मेज पर डेटा की मात्रा पर निर्भर करता है यह पूरा करने के लिए कुछ मिनट लग सकता है।

0

से पहले आपको स्वत: वृद्धि क्षेत्र के रूप में यह कर सकते हैं पहले प्राथमिक कुंजी के रूप में जोड़ने की आवश्यकता हो सकती है

आप इस उदाहरण

ALTER TABLE `category` 
ADD PRIMARY KEY (`cat_id`); 
ALTER TABLE `category` 
MODIFY `cat_id` int(11) NOT NULL AUTO_INCREMENT; 
1

मैं बहुत बड़े डेटा के साथ काम को देखो और एक आईडी था कर सकते हैं न्यूल से भरे कॉलम। मैंने संख्याओं को भरने के लिए निम्न SQL को चलाने का चयन किया ... फिर मैंने आईडी कॉलम को मेरी प्राथमिक कुंजी के रूप में सेट किया।

set @row = 0; 
UPDATE philadelphia.msg_geo_sal SET id = @row := @row + 1; 
संबंधित मुद्दे