मौजूदा तालिका में ऑटो-वृद्धि आईडी जोड़ें?


86

मेरे पास एक पूर्व-मौजूदा तालिका है, जिसमें 'fname', 'lname', 'email', 'password' और 'ip' हैं। लेकिन अब मुझे एक ऑटो-इन्क्रीमेंट कॉलम चाहिए। हालाँकि, जब मैं प्रवेश करता हूँ:

ALTER TABLE users
ADD id int NOT NULL AUTO_INCREMENT

मुझे निम्नलिखित मिले:

#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

कोई सलाह?:)


क्या आप अपनी मौजूदा तालिका परिभाषा पोस्ट कर सकते हैं?
टैरिन

कृपया के पोस्ट आउटपुटdescribe users
DKSan

कोशिश की है, लेकिन यह सिर्फ तालिका लौटाता है। तुम्हे क्या चाहिए?
चार्ल्स जेनकिंस

@CharlesJenkins क्या आप सही उत्तर चुन सकते हैं?
वाडीह एम।

MODIFY का उपयोग इस प्रकार भी किया जा सकता है: अन्य उपयोगकर्ताओं के लिए MODIFY id int NOT NULL AUTO_INCREMENT; / * AUG दिनांक 2019 * /
विलास जोशी

जवाबों:


134

इसे इस्तेमाल करे

ALTER TABLE `users` ADD `id` INT NOT NULL AUTO_INCREMENT;

एक मौजूदा प्राथमिक कुंजी के लिए


12
# 1068 - एकाधिक प्राथमिक कुंजी परिभाषित
चार्ल्स जेनकिंस

6
SQL सर्वर 2008 में, 'AUTO_INCREMENT' की जगह 'IDENTITY (1,1)' ने मेरे लिए काम किया।
ग्रेग ए

14
ध्यान दें कि यह तालिका में अंतिम कॉलम के रूप में एक आईडी-कॉलम जोड़ता है। FIRSTइस तालिका में इसे पहला बनाने के लिए क्वेरी में जोड़ें ।
टोबियास ब्यूमिस्टर

5
@CharlesJenkins "एकाधिक प्राथमिक कुंजी" त्रुटि से बचने के लिए, नए को परिभाषित करने से पहले मौजूदा प्राथमिक कुंजी को छोड़ दें:ALTER TABLE users DROP PRIMARY KEY, ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
सेम बीन

7
इसे पहला कॉलम बनाने के लिए, FIRSTजैसेALTER TABLE tbl1 ADD id INT PRIMARY KEY AUTO_INCREMENT FIRST
ताहिर रज़ा

75

यदि आपको परवाह नहीं है कि क्या ऑटो-आईडी का उपयोग किया जाता है PRIMARY KEY, तो आप बस कर सकते हैं

ALTER TABLE `myTable` ADD COLUMN `id` INT AUTO_INCREMENT UNIQUE FIRST;

मैंने बस यही किया और इसने एक ट्रीट का काम किया।


1
इसने मेरे लिए काम किया और प्राथमिक कुंजी के रूप में auto_increment id कॉलम सेट किया।
रिफ्लेक्सिव

3
FIRSTवहाँ क्या करता है ?
Cees टिम्मरमैन

13
@ सीस टिमरमैन: कीवर्ड एफआईआरएसटी इंगित करता है कि नया कॉलम तालिका में पहला कॉलम होगा। वैकल्पिक रूप से, आप AFTER अस्तित्व___नाम का उपयोग करके एक विशेष स्थिति निर्दिष्ट कर सकते हैं। यदि न तो FIRST और न ही AFTER का उपयोग किया जाता है तो सभी मौजूदा कॉलम के बाद नया कॉलम जोड़ा जाता है।
रुबेन रामिरेज़ पैडरन

क्या होगा अगर मैं आईडी पर एक इंडेक्स बनाना चाहता हूं, लेकिन पीके नहीं?
मॉर्फियस

@morpheus यह एक UNIQUE इंडेक्स जोड़ता है जो अपने आप में एक इंडेक्स है। मुझे ऐसा कोई कॉलम नहीं है जिसे id कहा जाता है जो कि PK नहीं है।
आर्थ

37

यदि आप मौजूदा तालिका में AUTO_INCREMENT जोड़ना चाहते हैं, तो SQL कमांड के बाद चलने की आवश्यकता है:

 ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT primary key

1
यह काम नहीं किया! इस त्रुटि को प्राप्त करें: # 1068 - एकाधिक प्राथमिक कुंजी परिभाषित
चार्ल्स जेनकिंस

4
आपको मिलता है Multiple primary key definedक्योंकि आपके पास पहले से ही मेज पर एक प्राथमिक कुंजी है। एक तालिका में केवल एक प्राथमिक कुंजी हो सकती है। तालिका में उपरोक्त कमांड को फिर से लें जब उसमें प्राथमिक कुंजी नहीं हो
cchi

3
"एकाधिक प्राथमिक कुंजी" त्रुटि से बचने के लिए, नए को परिभाषित करने से पहले मौजूदा प्राथमिक कुंजी को छोड़ दें:ALTER TABLE users DROP PRIMARY KEY, ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
सेम बीन

21

सबसे पहले आपको तालिका की प्राथमिक कुंजी को निकालना होगा

ALTER TABLE nametable DROP PRIMARY KEY

और अब यो autoincrement जोड़ सकते हैं ...

ALTER TABLE nametable ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY

ड्रॉप नहीं कर सकते हैं, तो ADD आईडी। मिलेगाDuplicate column name 'id'
जॉन जो

1
@ जॉनजो, क्योंकि आपके पास पहले से ही आईडी कॉलम है। इसे आज़माएँ: पहले से नॉटेबल ड्रोम प्राइमरी कुंजी, मोडी कोलम आईडी इन
नॉट नॉट ऑटोल_इनक्रिमेंट प्राइमरी

17

ठीक है, आपको पहले ड्रॉप करना होगा auto_incrementऔर primary keyआपके पास और उसके बाद अपना जोड़ना होगा, इस प्रकार है:

-- drop auto_increment capability
alter table `users` modify column id INT NOT NULL;
-- in one line, drop primary key and rebuild one
alter table `users` drop primary key, add primary key(id);
-- re add the auto_increment capability, last value is remembered
alter table `users` modify column id INT NOT NULL AUTO_INCREMENT;

1
यह त्रुटि मिली: # 1064 - आपके SQL सिंटैक्स में एक त्रुटि है; लाइन 1 पर 'LTER टेबल उपयोगकर्ताओं ADD आईडी int NULL AUTO_INCREMENT PRIMARY KEY (आईडी)' के पास उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से मेल खाती मैनुअल को चेक करें
चार्ल्स जेनकींस

अपने कोड देखो यू तैनात यह lter और नहीं बदल याद आती है, तो सुनिश्चित करें कि यू यह सब की नकल की
echo_Me

धन्यवाद, लेकिन अब मुझे यह त्रुटि मिली है: # 1064 - आपके SQL सिंटैक्स में एक त्रुटि है; पंक्ति 3 क्षमा करें पर 'ALTER TABLE उपयोगकर्ताओं को ADD id int nULL AUTO_INCREMENT PRIMARY KEY (id)' के पास उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से मेल खाने वाले मैनुअल की जाँच करें!
चार्ल्स जेनकिंस

यह मिला: # 1064 - आपके SQL सिंटैक्स में एक त्रुटि है; लाइन 1 पर '(id)' के पास उपयोग करने के लिए सही सिंटैक्स के लिए आपके MySQL सर्वर संस्करण से मेल खाती पुस्तिका की जाँच करें
चार्ल्स जेनकिंस

अच्छी तरह से आप मेरे जवाब में उन चरणों का पालन कर सकते हैं
echo_Me

13

यदि आप निम्न कमांड चलाते हैं:

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT PRIMARY KEY;

यह आपको त्रुटि दिखाएगा:

ERROR 1060 (42S21): Duplicate column name 'id'

ऐसा इसलिए है क्योंकि यह कमांड idमौजूदा तालिका में नामित नए कॉलम को जोड़ने का प्रयास करेगी ।

मौजूदा कॉलम को संशोधित करने के लिए आपको निम्नलिखित कमांड का उपयोग करना होगा:

ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT PRIMARY KEY;

यह मौजूदा कॉलम बाधा को बदलने के लिए काम करना चाहिए ....!


6

मौजूद होने पर किसी तालिका की प्राथमिक कुंजी हटाएं:

 ALTER TABLE `tableName` DROP PRIMARY KEY;

तालिका में एक ऑटो-इन्क्रीमेंट कॉलम जोड़ना:

ALTER TABLE `tableName` ADD `Column_name` INT PRIMARY KEY AUTO_INCREMENT;

स्तंभ को संशोधित करें जिसे हम प्राथमिक कुंजी के रूप में मानना ​​चाहते हैं:

alter table `tableName` modify column `Column_name` INT NOT NULL AUTO_INCREMENT PRIMARY KEY;

5

बस मोड में बदलें और यह काम करेगा!

बदलने के

ALTER TABLE users ADD id int NOT NULL AUTO_INCREMENT

सेवा

ALTER TABLE users MODIFY id int NOT NULL AUTO_INCREMENT;

4
ALTER TABLE users CHANGE id int( 30 ) NOT NULL AUTO_INCREMENT

पूर्णांक पैरामीटर मेरी डिफ़ॉल्ट sql सेटिंग पर आधारित है, एक अच्छा दिन है



1

PostgreSQL के लिए आपको auto_increment के बजाय SERIAL का उपयोग करना होगा।

ALTER TABLE your_table_name ADD COLUMN id SERIAL NOT NULL PRIMARY KEY

0

विभिन्न कॉलम के साथ पहले से मौजूद प्राथमिक कुंजी की जांच करें। यदि हाँ, तो प्राथमिक कुंजी का उपयोग करके छोड़ें:

ALTER TABLE Table1
DROP CONSTRAINT PK_Table1_Col1
GO

और फिर अपनी क्वेरी को वैसे ही लिखें।


0
ALTER TABLE `table` ADD `id` INT NOT NULL AUTO_INCREMENT unique

इसे इस्तेमाल करे। अपनी प्राथमिक कुंजी को छोड़ने की आवश्यकता नहीं है।


-1

इस तरह आगे बढ़ें:

Make a dump of your database first

Remove the primary key like that

अपने वैकल्पिक ड्रॉप प्राथमिक कुंजी को बदलें

Add the new column like that

अपनी पसंद को जोड़ने योग्य कॉलम Id नॉट नॉट नॉट ऑटोऑनक्रिमेंट FIRST, ADD प्राइमरी KEY Id (Id)

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

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