MySQL AUTO_INCREMENT क्या है? इसे कैसे जांचें, सेट करें और रीसेट करें (पूर्ण गाइड)

目次

MySQL AUTO_INCREMENT क्या है?

AUTO_INCREMENT की बुनियादी बातें

MySQL में, AUTO_INCREMENT एक सुविधा है जो डेटाबेस तालिका में संख्यात्मक मानों को स्वचालित रूप से बढ़ाती है। इसे आमतौर पर प्राथमिक कुंजी (PRIMARY KEY) के रूप में उपयोग किया जाता है, जिससे प्रत्येक नई पंक्ति के सम्मिलित होने पर क्रमिक संख्याएँ स्वचालित रूप से असाइन हो जाती हैं—बिना मैन्युअल रूप से ID निर्दिष्ट किए।

AUTO_INCREMENT के मुख्य उपयोग

  • स्वचालित सदस्य ID निर्माण : जब उपयोगकर्ता पंजीकरण करता है तो एक अनूठी ID असाइन करता है
  • ऑर्डर नंबर प्रबंधन : प्रत्येक ऑर्डर के लिए स्वचालित रूप से एक नंबर असाइन करता है
  • उत्पाद कोड असाइनमेंट : उत्पादों के लिए एक अनूठा पहचानकर्ता के रूप में उपयोग किया जाता है

AUTO_INCREMENT का सही उपयोग करके आप डेटा की विशिष्टता बनाए रख सकते हैं और प्रशासनिक कार्यभार को कम कर सकते हैं।

MySQL में AUTO_INCREMENT मान कैसे जांचें [3 SQL Commands]

विधि 1: SHOW TABLE STATUS का उपयोग करें

SHOW TABLE STATUS LIKE 'table_name';

जब आप यह कमांड चलाते हैं, तो वर्तमान AUTO_INCREMENT मान Auto_increment कॉलम में दिखाया जाता है।

विधि 2: INFORMATION_SCHEMA.TABLES से प्राप्त करें

SELECT AUTO_INCREMENT FROM information_schema.tables 
WHERE table_schema = 'database_name' AND table_name = 'table_name';

यह विधि आपको लक्ष्य तालिका के लिए सेट किए गए AUTO_INCREMENT मान को सीधे प्राप्त करने की अनुमति देती है।

विधि 3: SHOW CREATE TABLE का उपयोग करें

SHOW CREATE TABLE table_name;

जब आप यह कमांड चलाते हैं, तो तालिका निर्माण DDL (डेटा परिभाषा भाषा) प्रदर्शित होती है, जिसमें AUTO_INCREMENT सेटिंग शामिल होती है।

AUTO_INCREMENT को सेट और संशोधित कैसे करें

नई तालिका बनाते समय AUTO_INCREMENT सेट करना

नई तालिका बनाते समय AUTO_INCREMENT वाले कॉलम को परिभाषित करने के लिए, निम्नलिखित SQL का उपयोग करें:

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255)
);

मौजूदा तालिका का AUTO_INCREMENT मान बदलना

यदि आप मौजूदा तालिका का AUTO_INCREMENT मान बदलना चाहते हैं, तो निम्नलिखित कमांड का उपयोग करें:

ALTER TABLE users AUTO_INCREMENT = 1000;

इस कमांड को चलाने के बाद, अगली सम्मिलित रिकॉर्ड ID 1000 से शुरू होगी।

AUTO_INCREMENT वृद्धि मान बदलना (MySQL 8.0 या बाद में)

डिफ़ॉल्ट रूप से, AUTO_INCREMENT मान 1 से बढ़ता है। हालांकि, आवश्यकता पड़ने पर आप वृद्धि मान बदल सकते हैं।

SET @@auto_increment_increment = 5;

इस सेटिंग के साथ, AUTO_INCREMENT मान प्रत्येक बार 5 से बढ़ेगा (जैसे, 1, 6, 11, …).

AUTO_INCREMENT का उपयोग करते समय महत्वपूर्ण नोट्स [Prevent Data Issues]

AUTO_INCREMENT की अधिकतम मान सीमा

AUTO_INCREMENT का अधिकतम मान कॉलम के डेटा प्रकार पर निर्भर करता है। उदाहरण के लिए, INT प्रकार का उपयोग करने पर अधिकतम मान 2,147,483,647 है। यदि यह सीमा पार हो जाती है, तो नई IDs उत्पन्न नहीं की जा सकतीं, जिससे त्रुटि आती है।

समाधान

  • बड़े मानों को समर्थन देने के लिए BIGINT का उपयोग करें
  • आवश्यकतानुसार डेटा आर्काइविंग या रीसेट करने पर विचार करें

डेटा हटाने के बाद AUTO_INCREMENT का व्यवहार

MySQL में, रिकॉर्ड हटाने से AUTO_INCREMENT मान स्वचालित रूप से रीसेट नहीं होता।

DELETE FROM users WHERE id = 100;

भले ही किसी विशिष्ट ID को इस तरह हटाया जाए, अगला सम्मिलित मान वर्तमान काउंटर से जारी रहता है और पुनः उपयोग नहीं होता।

रीसेट कैसे करें
TRUNCATE TABLE का उपयोग करने से सभी डेटा हट जाता है और AUTO_INCREMENT मान रीसेट हो जाता है।

TRUNCATE TABLE users;

इस ऑपरेशन को करने के बाद, अगला सम्मिलित ID 1 से पुनः शुरू होगा।

लेनदेन और AUTO_INCREMENT

MySQL में, लेनदेन को रोलबैक (ROLLBACK) करने पर भी AUTO_INCREMENT मान नहीं घटता।

START TRANSACTION;
INSERT INTO users (name) VALUES ('Alice');
ROLLBACK;

इस स्थिति में डेटा सम्मिलित नहीं होता, लेकिन AUTO_INCREMENT मान बढ़ा रहता है। परिणामस्वरूप, ID संख्याओं में अंतराल हो सकता है।

अक्सर पूछे जाने वाले प्रश्न (FAQ)

प्रश्न 1: AUTO_INCREMENT मानों में कभी-कभी अंतराल क्यों होते हैं?

A: क्योंकि INSERT के बाद ROLLBACK होने पर संख्याएँ रीसेट नहीं होतीं। हटाने और विफल इन्सर्ट भी अंतराल पैदा कर सकते हैं.

Q2: AUTO_INCREMENT मान को कैसे रीसेट करूँ?

A: इसे रीसेट करने के लिए TRUNCATE TABLE table_name; चलाएँ.

Q3: वर्तमान AUTO_INCREMENT मान कैसे जाँचें?

A: SHOW TABLE STATUS का उपयोग करें या INFORMATION_SCHEMA.TABLES को क्वेरी करें.

Q4: यदि AUTO_INCREMENT अपनी अधिकतम मान से अधिक हो जाए तो क्या होता है?

A: यदि यह INT के अधिकतम मान से अधिक हो जाता है, तो त्रुटि उत्पन्न होगी। आपको कॉलम प्रकार को BIGINT में बदलना होगा.