जैसा कि हम जानते हैं, TRUNCATE डेटाबेस से टेबल की संरचना हटाए बिना सभी पंक्तियों को हटा देगा। वही काम DELETE कमांड की मदद से टेबल से सभी पंक्तियों को हटाकर किया जा सकता है। लेकिन दोनों कमांड के बीच PRIMARY KEY AUTO_INCREMENT के पुनः आरंभीकरण (re-initialization) का महत्वपूर्ण अंतर है।
मान लीजिए एक कॉलम को AUTO_INCREMENT के साथ PRIMARY KEY CONSTRAINT के रूप में परिभाषित किया गया है, तो DELETE कमांड से सभी पंक्तियों को हटाने पर टेबल पुनः आरंभ नहीं होगा यानी नई पंक्तियाँ डालने पर AUTO_INCREMENT संख्या अंतिम डाली गई पंक्ति के बाद से शुरू होगी। इसके विपरीत, TRUNCATE का उपयोग करने पर, टेबल नई बनी टेबल की तरह पुनः आरंभ होगी। इसका मतलब है TRUNCATE कमांड का उपयोग करने और नई पंक्तियाँ डालने पर AUTO_INCREMENT संख्या 1 से शुरू होगी।
उदाहरण:
निम्नलिखित उदाहरण उपरोक्त अवधारणा को प्रदर्शित करेगा:
mysql> CREATE TABLE Testing(Id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, Name VARCHAR(20));
Query OK, 0 rows affected (0.15 sec)
mysql> INSERT INTO testing(Name) VALUES('Gaurav'),('Rahul'),('Aarav'),('Yashraj'),('Manak');
Query OK, 5 rows affected (0.09 sec)
mysql> SELECT * FROM testing;
+----+---------+
| Id | Name |
+----+---------+
| 1 | Gaurav |
| 2 | Rahul |
| 3 | Aarav |
| 4 | Yashraj |
| 5 | Manak |
+----+---------+
mysql> DELETE FROM testing WHERE id >= 4;
Query OK, 2 rows affected (0.04 sec)
mysql> INSERT INTO testing(Name) VALUES('Harshit'),('Lovkesh');
Query OK, 2 rows affected (0.06 sec)
mysql> SELECT * FROM testing;
+----+---------+
| Id | Name |
+----+---------+
| 1 | Gaurav |
| 2 | Rahul |
| 3 | Aarav |
| 6 | Harshit |
| 7 | Lovkesh |
+----+---------+
mysql> TRUNCATE TABLE testing;
Query OK, 0 rows affected (0.10 sec)
mysql> INSERT INTO testing(Name) VALUES('Harshit'),('Lovkesh'),('Ram'),('Gaurav');
Query OK, 4 rows affected (0.11 sec)
mysql> SELECT * FROM testing;
+----+---------+
| Id | Name |
+----+---------+
| 1 | Harshit |
| 2 | Lovkesh |
| 3 | Ram |
| 4 | Gaurav |
+----+---------+
मुख्य अंतर सारांश:
| विशेषता | DELETE | TRUNCATE |
|---|---|---|
| AUTO_INCREMENT रीसेट | नहीं | हाँ |
| WHERE क्लॉज | समर्थित | समर्थित नहीं |
| ट्रिगर फायर | हाँ | नहीं |
| रोलबैक संभव | हाँ (ट्रांजेक्शन में) | नहीं |
| गति | धीमी | तेज |