全都無法使用,錯誤如下:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that
uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor -> Query Editor and reconnect.
記得在過去我是手動把這個選項關掉的,但是現在公司不允許我關閉這個選項,
所以我們來分析一下SQL_SAFE_UPDATES = 1時,做了什麼事是不被允許的。
1.如果你的UPDATE 或是DELTE 沒有指定where及limit條件,是不允許被執行的。
例如 DELETE from myTable;
2.如果你帶了where條件, 但where條件的column指定的不是pk,抱歉一樣不行
假如我有以下資料表 qoo
PK
sn name group
1 boywhy chen_family
2 monkey chen_family
3 google search
4 ebay store
我要刪除group為chen_family的話
delete from qoo where group chen_family ;
也是不被允許的。
但如果你要刪除where sn =1 or sn=2 or sn=3 則是被充許的,因為它是PK。
如果要刪除chen_family的話,其實還是有方法的。
DELETE FROM qoo where sn IN (Select sn from (Select sn from qoo as myqoo where `group`='chen_family')tmp) limit 20;
記得,一定要加limit ,否則是不會被充許執行的,在delete中limit的用途表示,最多刪除幾
筆,例如條件內有一百筆符合,但是limit 10的話只會刪除10筆,所以limit要怎麼下,可能要
考量程式架設設計上,並不是隨便一個數字都可以。
參考資料:
沒有留言:
張貼留言