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

ลบข้อมูลใน MySQL ภายใต้ Safe Mode (SQL_SAFE_UPDATES)


Safe Mode ใน MySQL

MySQL มีโหมด SQL_SAFE_UPDATES ป้องกันการ UPDATE หรือ DELETE โดยไม่มี WHERE ใช้ Primary Key หรือ Limit

ปิด Safe Mode ชั่วคราว

SET SQL_SAFE_UPDATES = 0;

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

สร้างตารางและข้อมูล

CREATE TABLE SafeDeleteDemo (Price INT);
INSERT INTO SafeDeleteDemo VALUES (100), (200), (300), (500), (1000), (150);

ข้อมูลก่อนลบ

+-------+
| Price |
+-------+
| 100   |
| 200   |
| 300   |
| 500   |
| 1000  |
| 150   |
+-------+

ปิด Safe Mode แล้วลบข้อมูล Price >= 500

SET SQL_SAFE_UPDATES = 0;
DELETE FROM SafeDeleteDemo WHERE Price >= 500;

ผลลัพธ์หลังลบ

+-------+
| Price |
+-------+
| 100   |
| 200   |
| 300   |
| 150   |
+-------+

เปิด Safe Mode กลับ

SET SQL_SAFE_UPDATES = 1;

ทางเลือกอื่น: ใช้ WHERE กับ Primary Key

หากไม่ต้องการปิด Safe Mode ให้ใช้ WHERE ระบุ Primary Key:

DELETE FROM SafeDeleteDemo WHERE id IN (4, 5);  -- สมมติ id เป็น PK

ตั้งค่าคงที่ใน Config (my.cnf / my.ini)

[mysqld]
sql_safe_updates=0

ต้อง Restart MySQL Service

คำเตือน: การปิด Safe Mode อาจทำให้ลบ/อัปเดตข้อมูลผิดพลาดได้ง่ายขึ้น ควรใช้งานอย่างระมัดระวัง และเปิดกลับทันทีหลังเสร็จ