คำอธิบาย
ใช้ TRUNCATE TABLE เพื่อลบข้อมูลทั้งหมดและรีเซ็ต AUTO_INCREMENT ให้เริ่มที่ 1 ใหม่
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY );
Query OK, 0 rows affected (1.44 sec)
การเพิ่มข้อมูล 4 แถว
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.35 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.30 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.06 sec)
แสดงข้อมูล (Auto Increment = 1,2,3,4)
mysql> select * from DemoTable;
ผลลัพธ์:
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 3 | | 4 | +-----------+ 4 rows in set (0.00 sec)
TRUNCATE TABLE รีเซ็ต AUTO_INCREMENT
mysql> truncate table DemoTable; Query OK, 0 rows affected (0.93 sec) mysql> select * from DemoTable; Empty set (0.00 sec)
Insert ใหม่หลัง Truncate
mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.09 sec) mysql> insert into DemoTable values(); Query OK, 1 row affected (0.07 sec)
แสดงข้อมูล (Auto Increment เริ่มที่ 1 ใหม่)
mysql> select * from DemoTable;
ผลลัพธ์:
+-----------+ | StudentId | +-----------+ | 1 | | 2 | | 3 | +-----------+ 3 rows in set (0.00 sec)
TRUNCATE vs DELETE
| คุณสมบัติ | TRUNCATE | DELETE |
|---|---|---|
| รีเซ็ต Auto Increment | ใช่ | ไม่ (ต้อง ALTER TABLE) |
| ความเร็ว | เร็วมาก (Drop + Recreate) | ช้ากว่า (Row by row) |
| Trigger | ไม่ยิง | ยิง ON DELETE |
| Rollback | ไม่ได้ (Implicit Commit) | ได้ (ใน Transaction) |
| WHERE clause | ไม่ได้ | ได้ |