如何降低UPDATE/DELETE时WHERE条件写错,或者压根没写WHERE条件带来的影响?

如何降低UPDATE/DELETE时WHERE条件写错,或者压根没写WHERE条件带来的影响?


0、尽量不要在线手工执行任何SQL命令,很容易出差错。线上直接执行SQL命令最好有第二检查人帮助确认。

1、最好在测试环境执行SQL确认无误后,再到生产环境执行,或者提前在本地文本环境编辑好确认后再执行。

2、建议打开sql_safe_updates选项,禁止没有WHERE条件或者不加LIMIT或者没有使用索引条件的UPDATE/DELETE命令被执行。也可以在用mysql客户端连接到服务器端时增加--safe-updates选项。
例如:# mysql --safe-updates -udba -p -S /data/mysql/3306/sock/mysql.sock

3、线上手动执行DML操作时,先开启事务模式,万一误操作可以回滚。例如:mysql> begin; update xxx; rollback;

4、通过DB管理平台执行DML操作,且在平台上增加对此类危险SQL的判断,直接拒绝危险SQL的执行。

5、配置延迟从库,发现误删除数据后,从延迟从库快速恢复数据。
原文地址:https://www.cnblogs.com/zhouwanchun/p/13150837.html