जब हम 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)