位置: 编程技术 - 正文

mysql利用参数sql_safe_updates限制update/delete范围详解(mysql参数表)

编辑:rootadmin

推荐整理分享mysql利用参数sql_safe_updates限制update/delete范围详解(mysql参数表),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql设置参数查询sql语句,mysql参数化查询,mysql参数表,mysql常用参数设置,mysql设置参数查询sql语句,mysql设置参数查询sql语句,mysql设置参数查询sql语句,mysql设置参数查询sql语句,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

大家应该都知道,我们在mysql运维中出现过不少因为update/delete条件错误导致数据被误更新或者删除的case,为避免类似问题的发生,可以用sql_safe_updates参数来对update/delete做限制。这个参数设置为on后,可防止因程序bug或者DBA手工误操作导致的整个表被更新或者删除的情况。下面话不多说了,来一起看看详细的介绍吧。

设置这个参数时需要注意一下几点:

a、设置前需要确认程序中所有的update和delete都符合sql_safe_updates的限制规范,不然程序会报错。

b、5.0,5.1都是session级别的,5.6是global&session级别;低版本的数据库只能在程序创建session时设置带上set sql_safe_updates=on;高版本的数据库可以直接set global set sql_safe_updates=on,设置完成后让程序重连后生效。

限制规范:

示例表结构:

1、update

a、报错条件:不带where、带where无索引、where条件为常量

不带where:update delay_monitor set Ftime=now();

带where无索引:update delay_monitor set Ftime=now() where Fgtid='test';

where条件为常量:update delay_monitor set Ftime=now() where 1;

b、执行条件:带where带索引、不带where+带limit、带where无索引+limit、带where有索引+limit、where条件为常量+limit

带where带索引:update delay_monitor set Ftime=now() where id=2;

不带where+带limit: update delay_monitor set Ftime=now() limit 1;

mysql利用参数sql_safe_updates限制update/delete范围详解(mysql参数表)

带where无索引+limit:update delay_monitor set Ftime=now() where Fgtid='test' limit 1;

带where有索引+limit:update delay_monitor set Ftime=now() where id =2 limit1;

where条件为常量+limit:update delay_monitor set Ftime=now() where 1 limit 1;

2、delete

相对于update,delelte的限制会更为严格;where条件为常量或者为空,将不予执行。

a、报错条件:不带where、带where无索引、不带where+带limit、where条件为常量、where条件为常量+limit

不带where:delete delay_monitor set Ftime=now();

带where无索引:delete delay_monitor set Ftime=now() where Fgtid='test';

不带where+带limit: delete delay_monitor set Ftime=now() limit 1;

where条件为常量:delete delay_monitor set Ftime=now() where 1;

where条件为常量+limit:delete delay_monitor set Ftime=now() where 1 limit 1;

b、执行条件:带where带索引、带where无索引+limit、带where有索引+limt

带where带索引:delete delay_monitor set Ftime=now() where id=2;

带where无索引+limit:delete delay_monitor set Ftime=now() where Fgtid='test' limit 1;

带where有索引+limit:delete delay_monitor set Ftime=now() where id =2 limit1;

总结如下表:key表示所有、const表示常量

操作 no where where key where nokey limit where nokey+limit where key+limit where const where const+limit delete NO YES NO NO YES YES NO NO update NO YES NO YES YES YES NO YES

总结

标签: mysql参数表

本文链接地址:https://www.jiuchutong.com/biancheng/348371.html 转载请保留说明!

上一篇:解析MySQL中存储时间日期类型的选择问题(mysql存储数据的原理)

下一篇:简析mysql字符集导致恢复数据库报错问题(mysql字符集的作用)

  • 物业收电费有问题找谁解决
  • 支付宝理财提现到银行卡有费用吗
  • 三证合一后税务登记证要收回吗
  • 银行承兑汇票 托收
  • 盈余公积转增股本的分录怎么写
  • 存货清查的结果
  • 员工造成损失怎么处理
  • 应收票据的会计分录例题
  • 进项税转出申报表能填负数吗
  • 预付款期末有结余年末如何做账务处理?
  • 个人开发者什么意思
  • 预付的固定资产没有收到发票怎么入账
  • 工程外出经营流程
  • 现金支付可以报销吗
  • 雇主责任险发票的项目名称怎么写
  • 房租开的专票怎么做账
  • 已认证的发票如何冲红
  • 企业购进货物若发生下列事项,其增值税进项税额
  • 股权投资损失怎么算出来的
  • 食堂固定资产管理制度
  • 广播影视服务需要交文化事业建设费吗
  • 预借差旅费计入其他应收款吗
  • 工伤赔偿工伤保险超出部分
  • 怎样打开电脑wifi连接
  • 投资印花税入什么科目
  • 固定资金的特点
  • vue页面获取url参数
  • PasSrv.exe - PasSrv是什么进程 有什么用
  • 盈余公积弥补以前年度亏损所有者权益会增加
  • php通用分页类
  • 印度活根桥 (© dhritipurna/Shutterstock)
  • 员工的通讯费怎么报销
  • 工业企业出租房屋的租金收入应计入
  • 防伪税控服务费怎么交
  • 云计算技术是学什么的
  • 数字图像处理-应用篇
  • 利用php判断文件是否存在
  • 报税营业成本可以乱填吗
  • javascript零基础入门书籍
  • php身份证号码验证
  • php5魔术方法
  • 网上学电脑的软件
  • 其他应收款如何计提减值准备
  • 总公司签协议,分公司开票,报账怎样写说明
  • rabbitmq work queue
  • 受让应收账款的账务处理
  • 工商企业年报网上申报流程
  • 复利现值系数表系数表
  • 固定资产盘亏是营业外支出吗
  • 订单式生产的企业有哪些
  • 公司注销资本公积
  • 半成品会计处理流程
  • 房地产预缴税款主表怎么填
  • 固定资产报废如何记账
  • 进项税转出补税按多少补税
  • 营业收入和营业总收入一样吗
  • mssql CASE,GROUP BY用法
  • 台式电脑NUM LOCK键还能亮,算不算死机了
  • ubuntu下的代码编辑器
  • win10打
  • linux安装fping
  • redhat 6.5 安装
  • cocos 2d x
  • cocos2d开发app
  • cad cl命令在哪里
  • python制作windows安装程序
  • Node.js中的construct构造函数
  • node drain事件
  • unity3d的作用
  • jquery按钮点击事件
  • 简述jquery的常用方法
  • python爬取前程无忧
  • 移动应用界面设计形考1答案
  • centos7如何安装
  • python调用ch
  • 如何查询企业出资时间
  • 运输发票抵税多少个点
  • 国税,地税
  • 电子口岸无纸化网上签约流程
  • 青海省地方税务局领导名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设