TRUNCATE TABLE के साथ ऑटो-इन्क्रीमेंट रीसेट करना
टेबल को ट्रंकेट करके ऑटो-इन्क्रीमेंट मान को 1 से पुनः आरंभ करें।
आइए पहले एक टेबल बनाते हैं:
mysql> CREATE TABLE DemoTable (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES ();
सभी रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 3 | | 4 | +-----------+
अब यदि आप और मान इन्सर्ट करेंगे, तो StudentId 5 से जारी रहेगा। इसे 1 से पुनः आरंभ करने के लिए टेबल को ट्रंकेट करें:
mysql> TRUNCATE TABLE DemoTable; mysql> SELECT * FROM DemoTable;
आउटपुट: Empty set
फिर से रिकॉर्ड्स इन्सर्ट करें:
mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES (); mysql> INSERT INTO DemoTable VALUES ();
रिकॉर्ड्स देखें:
mysql> SELECT * FROM DemoTable;
आउटपुट:
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 3 | +-----------+
व्याख्या:
- TRUNCATE TABLE: टेबल की सभी पंक्तियों को हटाता है और ऑटो-इन्क्रीमेंट काउंटर को रीसेट करता है
- DELETE FROM: के विपरीत, TRUNCATE ऑटो-इन्क्रीमेंट को रीसेट करता है (DELETE नहीं करता)
- तेज़: TRUNCATE, DELETE से तेज़ है क्योंकि यह पंक्ति-दर-पंक्ति नहीं हटाता
- ट्रिगर्स: TRUNCATE DELETE ट्रिगर्स को फायर नहीं करता
वैकल्पिक तरीके (डेटा रखते हुए):
-- ऑटो-इन्क्रीमेंट को विशिष्ट मान पर सेट करें ALTER TABLE DemoTable AUTO_INCREMENT = 1; -- या अधिकतम मौजूदा ID + 1 पर सेट करें ALTER TABLE DemoTable AUTO_INCREMENT = (SELECT MAX(StudentId) + 1 FROM DemoTable);
चेतावनी: TRUNCATE TABLE डेटा स्थायी रूप से हटा देता है और रोलबैक नहीं किया जा सकता (ट्रांजैक्शन-सेफ नहीं)।