MySQL 於 CLI 如何避免 SQL 疏忽造成的意外

MySQL 於命令列模式(Command-Line)時, 要下 DELETE / UPDATE 等指令, 都要特別注意 WHERE 指令有沒有寫, 有沒有問題 等等.

通常都會先用 WHERE 條件做一次 SELECT, 確定沒錯後, 再把 SELECT 改成 DELETE 或 UPDATE 來操作, 不過還是很難避免會有意外狀況, 不小心多刪掉一個字.. 等等的事情.

MySQL 有針對此件事情做了預防, 只要在 CLI 的模式裡面, 加上下述參數即可:

  • --i-am-a-dummy 或 --safe-updates 或 -U

--i-am-a-dummy 參數說明

Permit only those UPDATE and DELETE statements that specify which rows to modify by using key values. (取自: MySQL Options)

簡單講, 就是如果 UPDATE / DELETE 的語法, 要修改的 key 值沒有設定 INDEX / Primary key .. 等等, 就會刪除失敗(可以避免意外造成全部砍掉).

範例

  • $ mysql -u root -p --i-am-a-dummy # 或 mysql -u root -p -U
  • mysql> delete from table; # 沒有
  • ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

相關文章

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料