Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Truncate กับเงื่อนไขใน MySQL - ทำไม่ได้ ต้องใช้ DELETE แทน

TRUNCATE ไม่รองรับ WHERE Clause - ต้องใช้ DELETE แทน

ข้อเท็จจริง: คำสั่ง TRUNCATE TABLE ใน MySQL ไม่สามารถใช้กับ WHERE clause ได้ จะลบทุกแถวในตารางทันที

ทางเลือก: ใช้ DELETE

DELETE FROM yourTableName WHERE yourCondition;

ตัวอย่างการใช้งาน

สร้างตาราง DeleteDemo:

CREATE TABLE DeleteDemo (
    Id INT,
    Name VARCHAR(100)
);

ข้อมูลตัวอย่าง:

IdName
101Carol
102Sam
103Bob
104Mike
105John
106Maria
107Johnson

ลบข้อมูลที่ Id > 104:

DELETE FROM DeleteDemo WHERE Id > 104;

ผลลัพธ์:

IdName
101Carol
102Sam
103Bob
104Mike

ความแตกต่าง TRUNCATE vs DELETE

คุณสมบัติTRUNCATEDELETE
รองรับ WHEREไม่ได้ได้
ความเร็วเร็วมาก (ไม่ log ต่อแถว)ช้ากว่า (log ทุกแถว)
Auto IncrementReset เป็น 1ไม่ Reset
Triggerไม่ยิงยิง ON DELETE trigger
Rollbackไม่ได้ (DDL)ได้ (DML)

สรุป: ต้องการลบแบบมีเงื่อนไข → ใช้ DELETE | ต้องการลบทั้งตารางเร็วที่สุด → ใช้ TRUNCATE