Mysql - 安全模式:sql_safe_updates

安全模式

在mysql中,如果在update和delete没有加上where条件,数据将会全部修改。不只是初识mysql的开发者会遇到这个问题,有经验的工程师难免也会忘记写入where条件。

为了避免失误造成的数据全部修改和删除,通过配置sql_safe_updates可开启mysql的安全模式。

查看当前session会话

select @@sql_safe_updates;

查看全局的配置参数

select @@global.sql_safe_updates

开启安全模式

set [global] sql_safe_updates=1;

说明:

在update操作中:当where条件中列(column)没有索引可用且无limit限制时会拒绝更新。where条件为常量且无limit限制时会拒绝更新。

在delete操作中: 当①where条件为常量,②或where条件为空,③或where条件中 列(column)没有索引可用且无limit限制时拒绝删除。

总结

如果设置了sql_safe_updates=1,那么update语句必须满足如下条件之一才能执行成功

1)使用where子句,并且where子句中列必须为prefix索引列
2)使用limit
3)同时使用where子句和limit(此时where子句中列可以不是索引列)

delete语句必须满足如下条件之一才能执行成功
1)使用where子句,并且where子句中列必须为prefix索引列
2)同时使用where子句和limit(此时where子句中列可以不是索引列)

posted @ 2023-07-29 16:56  李若盛开  阅读(850)  评论(0)    收藏  举报