MySQL में AUTO_INCREMENT
AUTO_INCREMENT क्या है
AUTO_INCREMENT MySQL को बताता है कि हर बार row insert करने पर column को नया, unique number अपने-आप generate करे। यह लगभग हमेशा primary key पर इस्तेमाल होती है, तो आपको कभी खुद ids सोचनी नहीं पड़तीं — MySQL इन्हें भरता है, हर बार एक ज़्यादा।
Auto id बनाना
CREATE TABLE students (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
);
integer primary key id में AUTO_INCREMENT जोड़ना मतलब MySQL हर नई row को अपने-आप number देगा, 1 से शुरू।
Rows insert करना
INSERT INTO students (name) VALUES ('Aman');
INSERT INTO students (name) VALUES ('Diya');
SELECT * FROM students;
ध्यान दीजिए हमने id नहीं दी — MySQL ने अपने-आप 1, फिर 2 assign किया। आप बस बाक़ी columns insert करते हैं।
आख़िरी id पाना
INSERT INTO students (name) VALUES ('Kabir');
SELECT LAST_INSERT_ID();
LAST_INSERT_ID() वो id लौटाता है जो MySQL ने अभी generate की। यह बहुत उपयोगी है जब आप parent row insert करें और संबंधित child rows insert करने को उसकी नई id चाहिए।
Counter reset करना
ALTER TABLE students AUTO_INCREMENT = 100; -- अगली insert की row को id 100 मिलती है
आप set कर सकते हैं counter कहाँ से जारी हो। TRUNCATE TABLE students; भी इसे वापस 1 पर reset करता है, जबकि DELETE counter जहाँ था वहीं छोड़ता है। आप इसे सबसे ऊँची मौजूदा id से नीचे set नहीं कर सकते।
उपयोगी बातें
- Gaps सामान्य हैं। Row delete करना उसकी id दोबारा इस्तेमाल नहीं करता; counter बढ़ता रहता है।
- प्रति table एक। Table में सिर्फ़ एक AUTO_INCREMENT column हो सकता है।
- Key होनी चाहिए। Column primary या unique key होना चाहिए।
ये व्यवहार ids को unique और predictable रखते हैं।
आम गलतियाँ
- खुद id देना। MySQL को generate करने दीजिए; बस बाक़ी columns insert कीजिए।
- Delete की ids दोबारा इस्तेमाल की उम्मीद। वे नहीं होतीं — gaps ठीक हैं।
- AUTO_INCREMENT को max id से नीचे set करना। MySQL टकराने वाली values अनदेखा करता है।
- Non-key column पर इस्तेमाल करना। AUTO_INCREMENT को primary या unique key चाहिए।
सारांश
- AUTO_INCREMENT नई rows को unique ids auto-generate करता है।
- इसे integer primary key में जोड़िए:
id INT PRIMARY KEY AUTO_INCREMENT। - id बिना insert कीजिए; MySQL अगला number assign करता है।
LAST_INSERT_ID()अभी बनी id लौटाता है।- TRUNCATE counter reset करता है; delete की ids दोबारा इस्तेमाल नहीं होतीं।
आगे, एक साथ कई rows जोड़िए inserting multiple rows में, या key concepts primary key vs foreign key में।
अक्सर पूछे जाने वाले प्रश्न (FAQ)
MySQL में AUTO_INCREMENT क्या है?
AUTO_INCREMENT कैसे इस्तेमाल करूँ?
AUTO_INCREMENT जोड़िए, जैसे id INT PRIMARY KEY AUTO_INCREMENT। फिर id दिए बिना rows insert कीजिए, और MySQL अगला number अपने-आप assign करता है।MySQL में आख़िरी insert की गई id कैसे पाऊँ?
LAST_INSERT_ID() function इस्तेमाल कीजिए: SELECT LAST_INSERT_ID();। यह आपके connection पर सबसे हाल के insert की auto-generated id लौटाता है, जो संबंधित rows जोड़ने को उपयोगी है।AUTO_INCREMENT value कैसे reset करूँ?
ALTER TABLE tablename AUTO_INCREMENT = 1; इस्तेमाल कीजिए। ध्यान दीजिए TRUNCATE भी counter reset करता है, जबकि DELETE नहीं। आप इसे table में मौजूदा maximum id से नीचे set नहीं कर सकते।