जब हम MySQL कॉलम पर AUTO_INCREMENT का उपयोग करते हैं, तो अनुक्रम संख्या हमेशा बढ़ते क्रम में डिफ़ॉल्ट मान 1 से या हमारे द्वारा निर्दिष्ट मान से शुरू होती है।
यही कारण है कि MySQL AUTO_INCREMENT मान को उस मान में बदलने की अनुमति नहीं देता है जो वर्तमान अनुक्रम संख्या से कम है। इसे निम्न उदाहरण की सहायता से समझा जा सकता है -
उदाहरण
इस उदाहरण में मान लीजिए कि हमारे पास 'emp1' नाम की एक तालिका है और तालिका बनाते समय हम AUTO_INCREMENT VALUE को 100 तक निर्दिष्ट करते हैं। इसलिए तालिका में मान डालने के बाद, अनुक्रम 100 से आगे शुरू होगा जैसा कि हो सकता है निम्नलिखित क्वेरी के आउटपुट से देखा गया -
mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | +-----+---------+ 2 rows in set (0.00 sec)
अब जब हम ALTER TABLE क्वेरी की मदद से AUTO_INCREMENT मान को 90 में बदलने का प्रयास करते हैं, तो MySQL कोई त्रुटि और चेतावनी नहीं देता है क्योंकि क्वेरी ठीक है लेकिन जब हम तालिका में नए मान डालते हैं, तो MySQL निर्दिष्ट की तुलना करता है AUTO_INCREMENT मान वर्तमान अनुक्रम संख्या के साथ। चूंकि निर्दिष्ट AUTO_INCREMENT मान (90) वर्तमान अनुक्रम संख्या (101) से कम है, MySQL 102 से नए मान जमा करना शुरू कर देता है जिसे निम्नलिखित प्रश्नों से देखा जा सकता है -
mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90; Query OK, 2 rows affected (0.31 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Aryan'); Query OK, 1 row affected (0.08 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | | 102 | Aryan | +-----+---------+ 3 rows in set (0.00 sec)
इसके विपरीत, यदि हम AUTO_INCREMENT को उस मान में बदलने का प्रयास करेंगे जो वर्तमान अनुक्रम संख्या से अधिक है तो MySQL निर्दिष्ट मान से नए मान जमा करना शुरू कर देगा।
तालिका 'emp1' में इसे और अधिक स्पष्ट करने के लिए हम AUTO_INCREMENT मान को 108 में बदलते हैं, जो वर्तमान अनुक्रम संख्या से अधिक है, इसलिए MySQL नए सम्मिलित मानों को निर्दिष्ट AUTO_INCREMENT मान से यानी 108 से आगे जमा करना शुरू कर देता है।
mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 108; Query OK, 3 rows affected (0.30 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Daksh'); Query OK, 1 row affected (0.04 sec) mysql> Insert into emp1(name) values('Yashraj'); Query OK, 1 row affected (0.06 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | | 102 | Aryan | | 108 | Daksh | | 109 | Yashraj | +-----+---------+ 5 rows in set (0.00 sec)