Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

जब हम AUTO_INCREMENT मान को बदलते हैं जो वर्तमान अनुक्रम संख्या से कम है, तो MySQL क्या लौटाता है?

<घंटा/>

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

  1. MySQL क्वेरी AUTO_INCREMENT फ़ील्ड के लिए अनुक्रम में अगला नंबर प्राप्त करने के लिए?

    आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.58 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल मानों में डालें (); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.12 सेकंड) चयन कथन का उपयोग करके तालिका से सभी रिकॉर्ड प्रदर्शित करें - डेमोटेबल से *चुनें; आउटपुट यह

  1. दिनांक की तुलना करें जब प्रवेश दिनांक MySQL में वर्तमान तिथि से कम है

    आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable(AdmissionDate varchar(50));क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.63 सेकंड) नोट - मान लें कि आज की तारीख 14-सितंबर-2019 है। इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें। निम्नलिखित प्रश्न है - डेमोटेबल मानों में डालें (13-सितंबर-2020); क्वेरी

  1. MySQL के साथ वर्तमान तिथि से कम तिथि का चयन कैसे करें?

    आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable1877 (ड्यूडेट डेटटाइम);क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.00 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTable1877 मानों में डालें (2019-12-09); क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.00 सेकंड) चयन कथन का उपयोग करके तालिका से सभी