जैसा कि हम जानते हैं कि TRUNCATE डेटाबेस से टेबल की संरचना को हटाए बिना सभी पंक्तियों को हटा देगा। तालिका से सभी पंक्तियों को हटाने पर DELETE कमांड की सहायता से समान कार्य किया जा सकता है। लेकिन दोनों कमांड के बीच PRIMARY KEY AUTO_INCREMENT के री-इनिशियलाइज़ेशन का एक महत्वपूर्ण अंतर है।
मान लीजिए कि एक कॉलम को 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) Records: 5 Duplicates: 0 Warnings: 0 mysql> Select * from testing; +----+---------+ | Id | Name | +----+---------+ | 1 | Gaurav | | 2 | Rahul | | 3 | Aarav | | 4 | Yashraj | | 5 | Manak | +----+---------+ 5 rows in set (0.00 sec) mysql> Delete from testing where id >=4; Query OK, 2 rows affected (0.04 sec) mysql> Select * from testing; +----+--------+ | Id | Name | +----+--------+ | 1 | Gaurav | | 2 | Rahul | | 3 | Aarav | +----+--------+ 3 rows in set (0.00 sec) mysql> Insert into testing(Name) values('Harshit'),('Lovkesh'); Query OK, 2 rows affected (0.06 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Select * from testing; +----+---------+ | Id | Name | +----+---------+ | 1 | Gaurav | | 2 | Rahul | | 3 | Aarav | | 6 | Harshit | | 7 | Lovkesh | +----+---------+ 5 rows in set (0.00 sec) 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) Records: 4 Duplicates: 0 Warnings: 0 mysql> Select * from testing; +----+---------+ | Id | Name | +----+---------+ | 1 | Harshit | | 2 | Lovkesh | | 3 | Ram | | 4 | Gaurav | +----+---------+ 4 rows in set (0.00 sec)