安全模式設定
測試
1.無where的update和delete
2、非索引鍵的delete
3.索引鍵的delete
總結
大家肯定聽說過,有些開發者由于個人失誤,在delete或者update語句的時候沒有添加where語句,導緻整個表資料錯亂。
mysql安全模式:mysql發現delete、update語句沒有添加where或者limit條件時會報錯。整個sql将無法執行,有效防止了誤删表的情況。
在mysql中通過如下指令檢視狀态:

預設是OFF狀态,将狀态設定為ON即可:
<code>set sql_safe_updates=1;</code> //打開
<code>set sql_safe_updates=0;</code> //關閉
設定為ON之後
update語句:where條件中列(column)沒有索引可用且無limit限制時會拒絕更新。where條件為常量且無limit限制時會拒絕更新。
delete語句: ①where條件為常量,②或where條件為空,③或where條件中 列(column)沒有索引可用且無limit限制時拒絕删除。
打開安全模式進行測試
<code>delete from t_user</code>
<code>update t_user set name='123'</code>
<code>delete from t_user where name='123'</code>
如果delete的where條件不是索引鍵,則必須要添加limit才可以。
<code>delete from t_user where name='123' limit 1</code>
<code>delete from t_user where group_id='123'</code>
如果設定了<code>sql_safe_updates=1</code>,那麼<code>update</code>語句必須滿足如下條件之一才能執行成功
使用where子句,并且where子句中列必須為prefix索引列
使用limit
同時使用where子句和limit(此時where子句中列可以不是索引列)
<code>delete</code>語句必須滿足如下條件之一才能執行成功
一才能執行成功。