[TOC]
### 一、目的
mysql安全模式sql\_safe\_updates是为了防止我们在操作表时的误操作,把全表删除了或者更新了。
### 二、查询开启状态
```sql
mysql> show variables like 'sql_safe_updates';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| sql_safe_updates | OFF |
+------------------+-------+
```
结果为OFF表示,没有开启,如果为ON表示开启了
### 三、如何开启或关闭安全模式
#### 1\. 针对当前会话
这种方式只针对当前会话连接有效,不影响其他会话连接
1. 开启安全模式
```
set sql_safe_updates = 1;
```
1. 关闭安全模式
```
set sql_safe_updates = 0;
```
### 四、开启安全模式后的限制有哪些
#### 1. update语句必须满足如下条件之一才能执行成功
1) 使用where子句,并且where子句中列必须为prefix索引列
2) 使用limit
3) 同时使用where子句和limit(此时where子句中列可以不是索引列)
#### 2. delete语句必须满足如下条件之一才能执行成功
1) 使用where子句,并且where子句中列必须为prefix索引列
2) 同时使用where子句和limit(此时where子句中列可以不是索引列)