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 में INFORMATION_SCHEMA से AUTO_INCREMENT फील्ड का अगला क्रमिक मान प्राप्त करना

    MySQL में INFORMATION_SCHEMA.TABLES से AUTO_INCREMENT कॉलम का अगला मान (सीड) प्राप्त करें। उदाहरण: टेबल बनाना और डेटा डालना mysql> CREATE TABLE DemoTable ( -> Id INT NOT NULL AUTO_INCREMENT, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.58 sec) mysql> INSERT INT

  1. - MySQL में तुलना करें जब एडमिशन तारीख वर्तमान तारीख से कम हो

    VARCHAR तारीख कॉलम की तुलना CURDATE() से करने के लिए STR_TO_DATE() का उपयोग करके इसे DATE प्रकार में बदलें। टेबल बनाना CREATE TABLE DemoTable (AdmissionDate VARCHAR(50)); Query OK, 0 rows affected (0.63 sec) नोट: मान लें वर्तमान तारीख 14-Sep-2019 है। डेटा डालना INSERT INTO DemoTable VALUES(15-S

  1. - MySQL में NOW() से वर्तमान दिनांक से पहले की तिथि वाले रिकॉर्ड चुनें

    WHERE date_column < NOW() या CURDATE() का उपयोग करके वर्तमान दिनांक/समय से पहले की तिथि वाले रिकॉर्ड चुनें। टेबल बनाएं mysql> CREATE TABLE DemoTable1877 (DueDate DATETIME); डेटा डालें mysql> INSERT INTO DemoTable1877 VALUES(2019-12-10), (2019-12-05), (2019-12-07), (2019-12-09); वर्तमान दिना