TRUNCATE ไม่รองรับ WHERE Clause - ต้องใช้ DELETE แทน
ข้อเท็จจริง: คำสั่ง TRUNCATE TABLE ใน MySQL ไม่สามารถใช้กับ WHERE clause ได้ จะลบทุกแถวในตารางทันที
ทางเลือก: ใช้ DELETE
DELETE FROM yourTableName WHERE yourCondition;
ตัวอย่างการใช้งาน
สร้างตาราง DeleteDemo:
CREATE TABLE DeleteDemo (
Id INT,
Name VARCHAR(100)
);
ข้อมูลตัวอย่าง:
| Id | Name |
|---|---|
| 101 | Carol |
| 102 | Sam |
| 103 | Bob |
| 104 | Mike |
| 105 | John |
| 106 | Maria |
| 107 | Johnson |
ลบข้อมูลที่ Id > 104:
DELETE FROM DeleteDemo WHERE Id > 104;
ผลลัพธ์:
| Id | Name |
|---|---|
| 101 | Carol |
| 102 | Sam |
| 103 | Bob |
| 104 | Mike |
ความแตกต่าง TRUNCATE vs DELETE
| คุณสมบัติ | TRUNCATE | DELETE |
|---|---|---|
| รองรับ WHERE | ไม่ได้ | ได้ |
| ความเร็ว | เร็วมาก (ไม่ log ต่อแถว) | ช้ากว่า (log ทุกแถว) |
| Auto Increment | Reset เป็น 1 | ไม่ Reset |
| Trigger | ไม่ยิง | ยิง ON DELETE trigger |
| Rollback | ไม่ได้ (DDL) | ได้ (DML) |
สรุป: ต้องการลบแบบมีเงื่อนไข → ใช้ DELETE | ต้องการลบทั้งตารางเร็วที่สุด → ใช้ TRUNCATE