Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL में तालिकाओं के ऑटो-इन्क्रीमेंट मान को कम मान पर कैसे सेट करें?

MySQL में InnoDB इंजन (डिफ़ॉल्ट) के साथ आप ऑटो-इन्क्रीमेंट मान को वर्तमान अधिकतम से कम मान पर सेट नहीं कर सकते। इसके लिए MyISAM इंजन की आवश्यकता होती है, या तालिका को पुनर्निर्माण करना पड़ता है।

आधिकारिक दस्तावेज़ अनुसार व्यवहार:

MyISAM: यदि मान वर्तमान AUTO_INCREMENT कॉलम में अधिकतम मान से कम या बराबर है, तो मान वर्तमान अधिकतम + 1 पर रीसेट हो जाता है।
InnoDB: यदि मान कॉलम में वर्तमान अधिकतम मान से कम है, तो कोई त्रुटि नहीं होती लेकिन वर्तमान अनुक्रम मान अपरिवर्तित रहता है।

MyISAM इंजन के साथ उदाहरण

mysql> CREATE TABLE DemoTable (Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE='MyISAM';

mysql> INSERT INTO DemoTable VALUES (), (), (), (), (), ();  -- 6 पंक्तियाँ (ID 1-6)

mysql> SELECT * FROM DemoTable;

आउटपुट: ID 1, 2, 3, 4, 5, 6

ID 4, 5, 6 हटाना

mysql> DELETE FROM DemoTable WHERE Id IN (4, 5, 6);

शेष: ID 1, 2, 3

ऑटो-इन्क्रीमेंट को कम मान (4) पर सेट करना

mysql> ALTER TABLE DemoTable AUTO_INCREMENT = 4;

आउटपुट: Query OK, 3 rows affected (0.38 sec)

नई पंक्तियां डालना और जांचना

mysql> INSERT INTO DemoTable VALUES (), (), ();  -- 3 नई पंक्तियाँ
mysql> SELECT * FROM DemoTable;

आउटपुट:

+----+
| Id |
+----+
| 1  |
| 2  |
| 3  |
| 4  |  -- नया ऑटो-इन्क्रीमेंट 4 से शुरू
| 5  |
| 6  |
+----+

InnoDB के लिए समाधान:

  1. तालिका को MyISAM में बदलें, ऑटो-इन्क्रीमेंट सेट करें, वापस InnoDB में बदलें (छोटी तालिकाओं के लिए)
  2. नई तालिका बनाएं वांछित ऑटो-इन्क्रीमेंट के साथ, डेटा कॉपी करें, नाम बदलें
  3. TRUNCATE TABLE (सभी डेटा हटा देता है, ऑटो-इन्क्रीमेंट रीसेट करता है)

चेतावनी: ऑटो-इन्क्रीमेंट मान कम करना डुप्लिकेट कुंजी त्रुटियों का कारण बन सकता है यदि एप्लिकेशन क्रमिक ID पर निर्भर करता है।

  1. - MySQL में IFNULL() से NULL मान को 0 में बदलना

    MySQL में NULL मानों को डिफ़ॉल्ट मान (जैसे 0) से बदलने के लिए IFNULL() फ़ंक्शन का उपयोग किया जाता है। यह गणनाओं और रिपोर्टिंग में NULL-संबंधी समस्याओं से बचाता है। उदाहरण के लिए टेबल बनाना mysql> CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Value INT ); डेटा डालन

  1. - दो MySQL टेबल के बीच गुम मान कैसे खोजें

    दो MySQL टेबल के बीच गुम मान खोजने के लिए, NOT IN का उपयोग करें। पहले एक टेबल बनाते हैं: mysql> create table DemoTable1(Value int); Query OK, 0 rows affected (0.56 sec) इन्सर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें: mysql> insert into DemoTable1 values(1); Query OK, 1 row affected (0.

  1. - MySQL में ऑटो-इन्क्रीमेंट मान को 1 से शुरू करने के लिए कैसे सेट करें

    TRUNCATE TABLE के साथ ऑटो-इन्क्रीमेंट रीसेट करना टेबल को ट्रंकेट करके ऑटो-इन्क्रीमेंट मान को 1 से पुनः आरंभ करें। आइए पहले एक टेबल बनाते हैं: mysql> CREATE TABLE DemoTable ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY ); रिकॉर्ड्स इन्सर्ट करें: mysql> INSERT INTO DemoTable VALUES ();