位置: 编程技术 - 正文

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字符集的作用)

  • 支付企业所得税会计科目
  • 小微企业所得税优惠政策
  • 销售佣金 个税
  • 水电气费用属于固定成本
  • 农业生产者销售自产农产品按9%的税率征收增值税
  • 简易计税费
  • 税控盘维护费要交吗
  • 施工企业必须要注册造价工程师吗
  • 冲减产品成本会计分录
  • 车辆保险怎么计算器
  • 钉钉报销费用明细怎么写
  • 境外演艺经纪公司代扣代缴哪些税款?
  • 技术服务费普通发票怎么做账务处理
  • 跨区域经营增值税所得税预缴多少
  • 油票发票可以抵进项税吗
  • 火车票飞机票计入什么费用
  • 灭火器属于办公设施吗
  • 经营租赁交什么税种
  • 财务费用错记成管理费用
  • 增值税中的视同销售区分为几种情况?
  • 用系统自带命令行安装WIN10
  • win10 ltsc版
  • safari浏览器怎么快进
  • 利息收入结转时怎么做账
  • 车间报销办公用品费
  • php require include
  • 购货方收到红字发票怎么报税
  • 电脑的nip是什么
  • PHP:pg_unescape_bytea()的用法_PostgreSQL函数
  • cesium加载s3m
  • 所得税 季报
  • php判断数组是否为空的函数
  • devtools安装mac
  • 社保基数和实际工资怎么算
  • mysql和php连接
  • 环境检测费计入什么费用
  • php 循环
  • fold命令 限制文件列宽
  • @enable
  • 无盘领发票要怎么办
  • opengl加阴影
  • 织梦怎么用
  • 专项应付款的账务处理
  • 原材料折价销售怎么算
  • 工人意外伤害保险
  • 电子承兑汇票的承兑人是谁
  • 备抵类是什么意思
  • 职工教育经费可以冲回吗
  • 结转销售成本的凭证需要附件吗
  • 兼职人员的工资需要发票吗
  • 收到银行存款利息
  • 电商公司不用交税吗
  • 合伙企业有限合伙
  • 余额调节表一定要编制吗
  • 招待费的增值税怎么算
  • 劳动仲裁要出面吗
  • 盘亏和报废报损的区别
  • 小规模纳税人不超过10万免增值税
  • 公司注册代理费用标准
  • 社保费跟工资有关系吗
  • 出纳日记账的日期以什么为准
  • win7系统双击不能打开我的电脑
  • 使用组策略可控制什么
  • Windows Server 2008下高效域管理体验
  • windowsserver2008r2密码重置
  • win8.1使用
  • 苹果mac怎么安装win10
  • shstart.exe - shstart是什么进程 有什么用
  • linux卸载apache2
  • linux如何使用uname命令
  • nodejs函数返回值
  • 安卓好用的倒计时
  • cocos2dx schedule
  • 结合mint-ui移动端下拉加载实践方法总结
  • 批处理 修改文件名
  • unity closestpoint
  • js实现文字闪烁的方法
  • 百旺税控密码忘记了怎么找回
  • 河南普通发票查询真伪查询系统
  • 光伏电站电力监控系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设