Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Thực hiện DELETE trong chế độ Safe Mode của MySQL


MySQL Safe Mode (SQL_SAFE_UPDATES=1) chặn câu lệnh DELETE/UPDATE không có WHERE sử dụng khóa chính (PRIMARY KEY). Để tắt tạm thời:

Cú pháp

-- Tắt safe mode
SET SQL_SAFE_UPDATES = 0;

-- Thực hiện DELETE/UPDATE
DELETE FROM table_name WHERE condition;

-- Bật lại safe mode (khuyến nghị)
SET SQL_SAFE_UPDATES = 1;

Ví dụ minh họa

mysql> CREATE TABLE SafeDeleteDemo (Price INT);
Query OK, 0 rows affected (0.50 sec)

mysql> INSERT INTO SafeDeleteDemo VALUES (100),(200),(300),(500),(1000),(150);
Query OK, 6 rows affected

Dữ liệu ban đầu:

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

Tắt safe mode và xóa giá trị >= 500:

mysql> SET SQL_SAFE_UPDATES = 0;
Query OK, 0 rows affected (0.00 sec)

mysql> DELETE FROM SafeDeleteDemo WHERE Price >= 500;
Query OK, 2 rows affected (0.14 sec)

Kết quả:

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

Lưu ý quan trọng

  • SQL_SAFE_UPDATES là biến session, chỉ ảnh hưởng đến kết nối hiện tại.
  • Luôn bật lại SET SQL_SAFE_UPDATES = 1 sau khi xong.
  • Cách an toàn hơn: thêm điều kiện khóa chính vào WHERE: WHERE id > 0 AND Price >= 500.
  • Xem trạng thái: SHOW VARIABLES LIKE 'sql_safe_updates'.

Cấu hình vĩnh viễn

Thêm vào file cấu hình my.cnf/my.ini:

[mysqld]
sql_safe_updates=0

Khuyến nghị: giữ bật (1) cho an toàn, chỉ tắt khi cần thiết trong session.