MySQL INSERT में ऑटो-इन्क्रीमेंट कॉलम को छोड़ना
जब किसी टेबल का पहला कॉलम AUTO_INCREMENT होता है, तो आप INSERT स्टेटमेंट में उस कॉलम को छोड़ सकते हैं या NULL मान दे सकते हैं — MySQL स्वचालित रूप से अगला क्रमिक मान जनरेट करेगा।
उदाहरण: StudentId ऑटो-इन्क्रीमेंट है
टेबल बनाएं:
CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFirstName VARCHAR(100),
StudentAge INT
);
पहला कॉलम छोड़कर INSERT करें
INSERT INTO DemoTable VALUES (NULL, 'Robert', 21); INSERT INTO DemoTable VALUES (NULL, 'Sam', 22); INSERT INTO DemoTable VALUES (NULL, 'Bob', 24); INSERT INTO DemoTable VALUES (NULL, 'Carol', 20);
या कॉलम सूची निर्दिष्ट करके (अधिक स्पष्ट):
INSERT INTO DemoTable (StudentFirstName, StudentAge)
VALUES ('Robert', 21), ('Sam', 22), ('Bob', 24), ('Carol', 20);
परिणाम:
+-----------+------------------+------------+ | StudentId | StudentFirstName | StudentAge | +-----------+------------------+------------+ | 1 | Robert | 21 | | 2 | Sam | 22 | | 3 | Bob | 24 | | 4 | Carol | 20 | +-----------+------------------+------------+
महत्वपूर्ण नियम
- कॉलम सूची दें:
INSERT INTO table (col1, col2) VALUES (...)— सर्वोत्तम अभ्यास - NULL दें: ऑटो-इन्क्रीमेंट कॉलम के लिए
NULLया0याDEFAULTदे सकते हैं - छोड़ नहीं सकते: यदि कॉलम सूची नहीं दी और ऑटो-इन्क्रीमेंट पहला कॉलम नहीं है, तो मान देना आवश्यक है
अन्य कॉलम छोड़ना
डिफॉल्ट मान वाले कॉलम को भी छोड़ा जा सकता है:
CREATE TABLE DemoTable (
Id INT AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(50),
Status VARCHAR(20) DEFAULT 'active',
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- केवल Name दें, बाकी डिफॉल्ट लेंगे
INSERT INTO DemoTable (Name) VALUES ('John');
सर्वोत्तम अभ्यास
हमेशा कॉलम सूची निर्दिष्ट करें — यह कोड को अधिक मजबूत, पठनीय और स्कीमा परिवर्तनों के प्रति लचीला बनाता है।