सबक्वेरी से अगला आईडी मान डालना
INSERT ... SELECT के साथ MAX() + 1 का उपयोग करके उसी टेबल में अगला क्रमिक मान डाला जा सकता है।
तालिका और डेटा
mysql> CREATE TABLE DemoTable1484 (Id INT);
mysql> INSERT INTO DemoTable1484 VALUES(100), (175), (165), (145), (170);
MAX + 1 डालना
mysql> INSERT INTO DemoTable1484(Id)
-> SELECT MAX(Id) + 1 FROM DemoTable1484;
Query OK, 1 row affected (0.20 sec)
परिणाम
+------+
| Id |
+------+
| 100 |
| 175 |
| 165 |
| 145 |
| 170 |
| 176 | -- 175 + 1
+------+
चेतावनी: यह तरीका समवर्ती (concurrent) वातावरण में रेस कंडीशन पैदा कर सकता है। उत्पादन प्रणाली में AUTO_INCREMENT या सीक्वेंस/लॉक का उपयोग करें।
बेहतर विकल्प:
ALTER TABLE DemoTable1484 MODIFY Id INT AUTO_INCREMENT;
INSERT INTO DemoTable1484 VALUES (NULL); -- ऑटो जेनरेट