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 อาจทำให้ลบ/อัปเดตข้อมูลผิดพลาดได้ง่ายขึ้น ควรใช้งานอย่างระมัดระวัง และเปิดกลับทันทีหลังเสร็จ