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

MySQL में AUTO_INCREMENT मान बदलें: ALTER TABLE AUTO_INCREMENT = नया_मान

MySQL में ऑटो-इन्क्रीमेंट काउंटर का वर्तमान मान बदलना

सिंटैक्स:

ALTER TABLE yourTableName AUTO_INCREMENT = IntegerValue;

व्यावहारिक उदाहरण

1. ऑटो-इन्क्रीमेंट टेबल बनाएं:

mysql> CREATE TABLE changeCurrentAutoIncrementValue (
    -> CurrentCount INT AUTO_INCREMENT,
    -> PRIMARY KEY(CurrentCount)
    -> ); 
Query OK, 0 rows affected (0.60 sec)

2. डिफ़ॉल्ट मान डालें (1 से शुरू):

mysql> INSERT INTO changeCurrentAutoIncrementValue VALUES();
mysql> INSERT INTO changeCurrentAutoIncrementValue VALUES();
mysql> INSERT INTO changeCurrentAutoIncrementValue VALUES();
mysql> INSERT INTO changeCurrentAutoIncrementValue VALUES();

3. डिफ़ॉल्ट अनुक्रम (1,2,3,4):

+--------------+ 
| CurrentCount | 
+--------------+ 
| 1            | 
| 2            | 
| 3            | 
| 4            | 
+--------------+ 
4 rows in set (0.00 sec)

4. ऑटो-इन्क्रीमेंट को 300 पर सेट करें:

mysql> ALTER TABLE changeCurrentAutoIncrementValue AUTO_INCREMENT = 300; 
Query OK, 0 rows affected (0.27 sec)

5. नए रिकॉर्ड डालें:

mysql> INSERT INTO changeCurrentAutoIncrementValue VALUES();
mysql> INSERT INTO changeCurrentAutoIncrementValue VALUES();
mysql> INSERT INTO changeCurrentAutoIncrementValue VALUES();

6. अंतिम परिणाम:

+--------------+ 
| CurrentCount | 
+--------------+ 
| 1            | 
| 2            | 
| 3            | 
| 4            | 
| 300          | 
| 301          | 
| 302          | 
+--------------+ 
7 rows in set (0.00 sec)

महत्वपूर्ण नियम:

  • नया AUTO_INCREMENT मान वर्तमान अधिकतम मान से बड़ा होना चाहिए
  • अगर आप 300 से कम मान सेट करने का प्रयास करते हैं, तो MySQL इसे अनदेखा कर देगा (चेतावनी दे सकता है)
  • यह केवल अगले मान को प्रभावित करता है, मौजूदा डेटा नहीं बदलता

उपयोग केस:

  • माइग्रेशन के बाद ID स्पेस आरक्षित करना
  • शार्डिंग/क्लस्टरिंग में ID रेंज आवंटित करना
  • टेस्ट डेटा के बाद प्रोडक्शन ID रेंज शुरू करना
  • मर्ज/रीस्ट्रक्चरिंग के बाद गैप भरना

वर्तमान ऑटो-इन्क्रीमेंट मान जांचें:

SHOW TABLE STATUS LIKE 'table_name'\G
-- Auto_increment: 300 दिखाएगा

-- या
SELECT AUTO_INCREMENT 
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name';

सावधानी:

  • TRUNCATE TABLE ऑटो-इन्क्रीमेंट को 1 पर रीसेट करता है
  • रेप्लिकेशन में सावधानी: मास्टर/स्लेव पर अलग मान समस्या पैदा कर सकते हैं
  • बड़े मान (BIGINT रेंज के करीब) सेट न करें
  1. - MySQL में ENUM कॉलम से केवल 'NO' मानों की गणना करें

    MySQL में ENUM कॉलम पर सशर्त गणना के लिए बूलियन अभिव्यक्ति का योग (SUM(condition)) उपयोग कर सकते हैं। MySQL में TRUE = 1 और FALSE = 0 होता है। टेबल बनाएं mysql> CREATE TABLE DemoTable1829 ( Name VARCHAR(20), isTopper ENUM(YES,NO) ); डेटा डालें mysql> INSERT INTO DemoTable1829 VALUES(

  1. - MySQL में DATE_ADD और INTERVAL से दिनांक/समय में सेकंड जोड़ें

    DATE_ADD() के साथ INTERVAL n SECOND का उपयोग करके DATETIME/TIMESTAMP कॉलम में सेकंड जोड़ें। टेबल बनाएं mysql> CREATE TABLE DemoTable1867 (ArrivalTime DATETIME); डेटा डालें mysql> INSERT INTO DemoTable1867 VALUES(2019-10-12 12:34:45); mysql> INSERT INTO DemoTable1867 VALUES(2019-10-12 10:0

  1. - MySQL में टेबल A की तुलना में टेबल B में नहीं होने पर टेबल C में डेटा डालें

    समाधान टेबल A और B पर LEFT JOIN का उपयोग करें, जहां B में मेल नहीं खाता वहां के रिकॉर्ड टेबल C में डालें। उदाहरण टेबल A (demo20): INSERT INTO demo20 VALUES (100,John), (101,Bob), (102,Mike), (103,Carol); टेबल B (demo21): INSERT INTO demo21 VALUES (100,Sam), (101,Adam), (133,Bob), (145,David); ट