http://docs.oracle.com/cd/E17952_01/refman-5.5-en/example-auto-increment.html
3.6.9। AUTO_INCREMENT
AUTO_INCREMENT विशेषता का उपयोग नई पंक्तियों के लिए एक अद्वितीय पहचान उत्पन्न करने के लिए इस्तेमाल किया जा सकता:
CREATE TABLE animals (
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO animals (name) VALUES
('dog'),('cat'),('penguin'),
('lax'),('whale'),('ostrich');
SELECT * FROM animals;
Which returns:
+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
| 6 | ostrich |
+----+---------+
कोई मूल्य, AUTO_INCREMENT स्तंभ के लिए निर्दिष्ट किया गया था तो MySQL स्वचालित रूप से अनुक्रम संख्या सौंपा। अनुक्रम संख्या उत्पन्न करने के लिए आप स्तंभ में NULL या 0 को स्पष्ट रूप से असाइन भी कर सकते हैं।
आप LAST_INSERT_ID() SQL फ़ंक्शन या mysql_insert_id() सी एपीआई फ़ंक्शन के साथ सबसे हालिया AUTO_INCREMENT मान पुनर्प्राप्त कर सकते हैं। ये फ़ंक्शन कनेक्शन-विशिष्ट हैं, इसलिए उनके वापसी मान किसी अन्य कनेक्शन से प्रभावित नहीं होते हैं जो आवेषण भी कर रहा है।
AUTO_INCREMENT कॉलम के लिए सबसे छोटा पूर्णांक डेटा प्रकार का उपयोग करें जो अधिकतम अनुक्रम मान को रखने के लिए पर्याप्त है। जब कॉलम डेटा प्रकार की ऊपरी सीमा तक पहुंच जाता है, तो अनुक्रम संख्या उत्पन्न करने का अगला प्रयास विफल रहता है। यदि अधिक सीमा की अनुमति देने के लिए संभव हो तो UNSIGNED विशेषता का उपयोग करें। उदाहरण के लिए, यदि आप TINYINT का उपयोग करते हैं, तो अधिकतम अनुमत अनुक्रम संख्या 127 है। TINYINT के लिए हस्ताक्षर किए गए, अधिकतम 255 है। खंड 11.2.1, "पूर्णांक प्रकार (सटीक मान) - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT देखें "सभी पूर्णांक प्रकारों की श्रेणियों के लिए।
नोट एकाधिक-पंक्ति सम्मिलित करने के लिए, LAST_INSERT_ID() और mysql_insert_id() वास्तव में डाली गई पंक्तियों में से पहले AUTO_INCREMENT कुंजी लौटाते हैं। यह एक प्रतिकृति सेटअप में अन्य सर्वरों पर बहु-पंक्ति प्रविष्टियों को सही ढंग से पुन: उत्पन्न करने में सक्षम बनाता है।
यदि ऑटोऑक्शनक्रिएशन कॉलम एकाधिक इंडेक्स का हिस्सा है, तो MySQL एक इंडेक्सक्रिएटमेंट कॉलम से शुरू होने वाली इंडेक्स का उपयोग करके अनुक्रम मान उत्पन्न करता है, यदि कोई है तो। उदाहरण के लिए, यदि जानवरों की तालिका में प्रिंटर कुंजी (जीआरपी, आईडी) और इंडेक्स (आईडी) इंडेक्स शामिल हैं, तो MySQL अनुक्रम मान उत्पन्न करने के लिए प्राथमिक कुंजी को अनदेखा कर देगा। नतीजतन, तालिका में एक अनुक्रम होगा, प्रति अनुक्रम प्रति अनुक्रम नहीं।
एक AUTO_INCREMENT 1 के अलावा अन्य मूल्य के साथ शुरू, टेबल बनाएं उस मान को सेट या टेबल बदल सकता है, इस तरह करने के लिए:
mysql> तालिका परिवर्तन tbl AUTO_INCREMENT = 100; इनो डीबी नोट्स
इनो डीबी टेबल के लिए, सावधान रहें यदि आप INSERT कथन के अनुक्रम के बीच में ऑटो-वृद्धि मूल्य वाले कॉलम को संशोधित करते हैं। उदाहरण के लिए, यदि आप स्वत: वृद्धि कॉलम में नया, बड़ा मान लगाने के लिए अद्यतन विवरण का उपयोग करते हैं, तो बाद में INSERT को "डुप्लिकेट एंट्री" त्रुटि मिल सकती है। परीक्षण करें कि एक ऑटो-वृद्धि मूल्य पहले से मौजूद है या नहीं, यदि आप अधिक INSERT कथन के बाद DELETE करते हैं, या जब आप लेनदेन को COMMIT करते हैं, लेकिन अपडेट स्टेटमेंट के बाद नहीं।
MyISAM नोट्स
MyISAM तालिकाओं के लिए, आप एक बहु-स्तंभ सूचकांक में एक माध्यमिक स्तंभ पर AUTO_INCREMENT निर्दिष्ट कर सकते हैं। इस मामले में, AUTO_INCREMENT कॉलम के लिए जेनरेट किया गया मान MAX (auto_increment_column) + 1 WHERE prefix = given-prefix के रूप में गणना की जाती है। यह तब उपयोगी होता है जब आप डेटा को क्रमबद्ध समूहों में रखना चाहते हैं।
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
INSERT INTO animals (grp,name) VALUES
('mammal','dog'),('mammal','cat'),
('bird','penguin'),('fish','lax'),('mammal','whale'),
('bird','ostrich');
SELECT * FROM animals ORDER BY grp,id;
Which returns:
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+
इस मामले (जब AUTO_INCREMENT स्तंभ एक बहु-स्तंभ अनुक्रमणिका का हिस्सा है) में, AUTO_INCREMENT मूल्यों अगर आप किसी भी समूह में सबसे बड़ी AUTO_INCREMENT मूल्य के साथ पंक्ति को हटा पुन: उपयोग किया जाता है। यह MyISAM तालिकाओं के लिए भी होता है, जिसके लिए स्वचालित रूप से AUTO_INCREMENT मानों का पुन: उपयोग नहीं किया जाता है।
अतिरिक्त पठन
अधिक AUTO_INCREMENT के बारे में जानकारी यहाँ उपलब्ध है:
एक स्तंभ के लिए AUTO_INCREMENT विशेषता कैसे आवंटित करने के लिए: धारा 13.1.17, "CREATE TABLE सिंटेक्स", और धारा 13.1.7, " वैकल्पिक तालिका सिंटेक्स "।
कैसे AUTO_INCREMENT NO_AUTO_VALUE_ON_ZERO SQL मोड के आधार पर व्यवहार करता है: खंड 5.1.7, "सर्वर SQL मोड"।
सबसे हालिया AUTO_INCREMENT मान वाली पंक्ति को खोजने के लिए LAST_INSERT_ID() फ़ंक्शन का उपयोग कैसे करें: खंड 12.14, "सूचना कार्य"।
उपयोग करने के लिए AUTO_INCREMENT मान सेट करना: खंड 5.1.4, "सर्वर सिस्टम चर"।
स्वत: सुधार और प्रतिकृति: खंड 16.4.1.1, "प्रतिकृति और स्वत: सुधार"।
AUTO_INCREMENT (auto_increment_increment और auto_increment_offset) से संबंधित सर्वर-सिस्टम चर जो प्रतिकृति के लिए उपयोग किए जा सकते हैं: खंड 5.1.4, "सर्वर सिस्टम चर"।
http://search.oracle.com/search/search?q=auto_increment&group=Documentation&x=0&y=0
हर कीमत पर? वास्तव में? –