首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

防止 MySQL 誤執行 DELETE 刪除數據的兩種實用策略

     編輯:MySQL 資料庫相關知識

方法一:軟刪除(邏輯刪除)

在資料表中新增一個標記欄位,例如 is_del (TINYINT,預設 0)。

  • 刪除操作改為:UPDATE table SET is_del = 1 WHERE id = ?
  • 查詢時加上條件:WHERE is_del = 0
  • 優點:資料可恢復,便於審計;缺點:需修改所有查詢,索引需包含該欄位。

方法二:啟用 --safe-updates 模式

啟動 MySQL 時加入 -U 或 --safe-updates 參數。

mysqld --safe-updates ...

或在 my.cnf 的 [mysqld] 區塊添加:

safe-updates = 1

效果: 若 DELETE 或 UPDATE 缺少 WHERE 條件(或未使用索引鍵),語句將直接報錯拒絕執行,有效防止全表誤刪。

適用場景建議

場景推薦策略
業務允許資料恢復、需保留歷史軟刪除
生產環境防人為誤操作、不想改代碼--safe-updates
兩者兼備同時啟用

注意事項

  • --safe-upsets 也會限制 SELECT 必須帶 LIMIT,可能影響某些報表查詢,可在會話中用 SET SQL_SAFE_UPDATES=0 臨時關閉。
  • 軟刪除需定期清理真正無用資料,可配合定時任務硬刪除 is_del=1 且超過保留期的記錄。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved