TRUNCATE TABLE टेबल की सभी पंक्तियाँ हटाता है और AUTO_INCREMENT काउंटर को शुरुआती मान (डिफ़ॉल्ट 1) पर रीसेट करता है। यह DELETE से तेज़ है और लॉग नहीं करता।
टेबल बनाएं
mysql> CREATE TABLE DemoTable1888 (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
डेटा डालें
mysql> INSERT INTO DemoTable1888 VALUES(), (), ();
+----+ | Id | +----+ | 1 | | 2 | | 3 | +----+
TRUNCATE से रीसेट करें
mysql> TRUNCATE TABLE DemoTable1888; Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM DemoTable1888; Empty set (0.00 sec)
फिर से डालें → आईडी 1 से शुरू
mysql> INSERT INTO DemoTable1888 VALUES(), (); mysql> SELECT * FROM DemoTable1888;
+----+ | Id | +----+ | 1 | | 2 | +----+
TRUNCATE vs DELETE
| विशेषता | TRUNCATE TABLE | DELETE FROM |
|---|---|---|
| गति | बहुत तेज़ (मेटाडेटा ऑपरेशन) | धीमा (पंक्ति-दर-पंक्ति) |
| AUTO_INCREMENT रीसेट | हां | नहीं |
| ट्रिगर फायर | नहीं | हां |
| रोलबैक | नहीं (अंतर्निहित कमिट) | हां (ट्रांजैक्शन में) |
| WHERE क्लॉज | नहीं | हां |
| विदेशी कुंजी बाधा | ब्लॉक करता है (अन्य टेबल रेफरेंस करते हों) | पंक्ति-दर-पंक्ति जांच |
केवल AUTO_INCREMENT रीसेट करें (डेटा रखें)
ALTER TABLE DemoTable1888 AUTO_INCREMENT = 1;
नोट: वर्तमान अधिकतम आईडी से कम मान सेट करने पर कोई प्रभाव नहीं; अगला आईडी = MAX(id) + 1 होगा।