今天工作中,我的同事遇到了一個比較麻煩的問題,他在執行刪除操作時不小心執行錯了sql語句,導致數據被誤刪了。這里我將記錄兩種刪除錯誤的情況以及我們的解決方案。
情況一:
DELETE FROM user WHERE id = 1;
這個sql語句的意思是刪除id為1的用戶,然而執行時他不小心少打了一個字母,變成了:
DETE FROM user WHERE id = 1;
這時候,由于拼寫錯誤,mysql會報錯,但是由于并沒有進行任何條件限制的刪除,數據已經全部被刪除了。
解決方案:
我們先通過備份進行數據的恢復,然后對這個表進行修改,將防刪功能添加上去。這樣在以后類似的錯誤操作中,再次進行刪除時就會有條件的限制,不至于誤刪整張表數據。
情況二:
DELETE FROM record WHERE user_id >100;
這個sql語句是想要刪除所有用戶id大于100的記錄,但是由于他又一次失誤將大于符號寫成了小于符號,變成了:
DELETE FROM record WHERE user_id< 100;
這時候,由于他沒有仔細檢查,沒有發現錯誤符號,數據也被刪除了。
解決方案:
我們同樣進行數據的備份和恢復,然后就是進行sql語句的認真檢查,盡量避免類似失誤的情況出現。如果實在不放心,我們可以在執行之前加上begin;語句,表示開啟一個事務。在執行完sql語句之后再加上commit;語句,這樣可以保證在出現錯誤的情況下及時進行回滾,避免誤操作導致重大損失。
上一篇mysql 同一個表格