MySQL में AUTO_INCREMENT प्रारंभ मान सेट करना (गैर-प्राइमरी की कॉलम के लिए)
किसी गैर-प्राइमरी की कॉलम पर AUTO_INCREMENT के साथ विशिष्ट मान (जैसे 1000) से शुरू करने के लिए, टेबल निर्माण के बाद ALTER TABLE ... AUTO_INCREMENT = value का उपयोग करें।
आवश्यक शर्तें
- कॉलम पर
INDEXयाUNIQUEइंडेक्स होना चाहिए (MySQL आवश्यकता) - कॉलम
NOT NULLहोना चाहिए - केवल एक AUTO_INCREMENT कॉलम प्रति टेबल
उदाहरण के साथ पूर्ण कार्यान्वयन
टेबल बनाना (इंडेक्स के साथ गैर-PK ऑटो-इन्क्रीमेंट)
mysql> CREATE TABLE DemoTable639 (
StudentId INT PRIMARY KEY,
StudentStartId INT AUTO_INCREMENT,
StudentName VARCHAR(50),
INDEX(StudentStartId)
);
ऑटो-इन्क्रीमेंट प्रारंभ मान सेट करना
mysql> ALTER TABLE DemoTable639 AUTO_INCREMENT = 1000;
परिणाम: Query OK, 0 rows affected (0.28 sec) Records: 0 Duplicates: 0 Warnings: 0
रिकॉर्ड डालना (StudentStartId निर्दिष्ट किए बिना)
mysql> INSERT INTO DemoTable639(StudentId, StudentName) VALUES
(1, 'John'), (2, 'Chris'), (3, 'Robert'), (4, 'David');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable639;
आउटपुट:
+-----------+----------------+-------------+
| StudentId | StudentStartId | StudentName |
+-----------+----------------+-------------+
| 1 | 1000 | John |
| 2 | 1001 | Chris |
| 3 | 1002 | Robert |
| 4 | 1003 | David |
+-----------+----------------+-------------+
4 rows in set (0.00 sec)
मुख्य बिंदु:
StudentIdप्राइमरी की है (मैन्युअल मान)StudentStartIdAUTO_INCREMENT है 1000 से शुरूINDEX(StudentStartId)AUTO_INCREMENT के लिए आवश्यक- INSERT में StudentStartId निर्दिष्ट नहीं किया गया → स्वतः 1000, 1001, 1002, 1003
टेबल निर्माण के समय सेट करना (वैकल्पिक)
CREATE TABLE DemoTable639 (
StudentId INT PRIMARY KEY,
StudentStartId INT AUTO_INCREMENT,
StudentName VARCHAR(50),
INDEX(StudentStartId)
) AUTO_INCREMENT = 1000;
वर्तमान AUTO_INCREMENT मान जांचना
SHOW TABLE STATUS LIKE 'DemoTable639'\G
-- Auto_increment: 1004 (अगला मान)
AUTO_INCREMENT रीसेट करना
ALTER TABLE DemoTable639 AUTO_INCREMENT = 1000;
ध्यान: मौजूदा अधिकतम मान से कम मान सेट नहीं कर सकते (डेटा हानि रोकने के लिए)।
उपयोग के मामले
- लिगेसी सिस्टम माइग्रेशन (मौजूदा आईडी रेंज जारी रखना)
- मल्टी-मास्टर रेप्लिकेशन (अलग आईडी रेंज)
- परीक्षण डेटा में विशिष्ट रेंज
- ऑडिट/अनुपालन आवश्यकताएं
⚠️ चेतावनी
गैर-PK AUTO_INCREMENT कॉलम दुर्लभ हैं। आमतौर पर PK ही AUTO_INCREMENT होता है। यदि संभव हो तो PK को ही 1000 से शुरू करें:
CREATE TABLE DemoTable (
Id INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50)
) AUTO_INCREMENT = 1000;