Seperti yang kita sedia maklum, TRUNCATE akan memadamkan semua baris tanpa mengalih keluar struktur jadual daripada pangkalan data. Perkara yang sama boleh dilakukan dengan bantuan perintah DELETE untuk memadam semua baris dari jadual. Tetapi terdapat perbezaan yang ketara dalam pemulaan semula PRIMARY KEY AUTO_INCRMENT antara kedua-dua arahan.
Dengan mengandaikan bahawa lajur ditakrifkan dengan AUTO_INCRMENT dengan KEKANGAN UTAMA UTAMA, maka jadual permulaan tidak akan dimulakan semula apabila semua baris dipadamkan menggunakan perintah DELETE, iaitu, apabila baris baharu dimasukkan, Nombor AUTO_INCREMENT akan ditukar daripada yang terakhir dimasukkan Mula demi baris. Sebaliknya, apabila menggunakan TRUNCATE, jadual dimulakan semula seperti jadual yang baru dibuat. Ini bermakna selepas menggunakan perintah TRUNCATE dan memasukkan baris baharu, nombor AUTO_INCRMENT akan bermula pada 1.
Contoh berikut akan menunjukkan konsep di atas -
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)
Atas ialah kandungan terperinci Apakah perbezaan antara perintah MySQL TRUNCATE dan DELETE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!