位置: 编程技术 - 正文

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

  • 进料加工要交税吗
  • 车船税是否每年都交
  • 机械租赁适用税率
  • 息税前利润的计算公式EBIT
  • 个人独资企业需要交什么税
  • 开票和收到的款金额不一样怎么办?
  • 支付货代运费账务处理
  • 个人所得税隔月交么
  • 由商场代收营业费怎么算
  • 纳税人等级怎么划分
  • 个体工商户2023年税收政策
  • 软件和硬件可以用什么代名词
  • 社保缴纳已超标准
  • 误餐费没有发票怎么说明
  • 转让专利属于什么分配
  • 产品检验费怎样做账?
  • 售楼部垃圾桶
  • 负数发票需要抵扣吗
  • 计提与不计提短贷的区别
  • 开增值税发票开户行怎么填?
  • 增值税留抵税额抵减欠税
  • 餐饮行业原材料
  • 外包业务账务处理
  • 流转税通俗举例
  • 税控盘全额抵扣怎么做账
  • 矿产资源税是多少
  • 金税盘上报汇总是什么时候
  • 怎么查找使用手机的时间
  • 子公司代母公司支付费用
  • 物业公司收的电梯费如何做账
  • 高温补贴是政府发放的吗
  • 非同一控制下企业合并商誉的计算
  • 购进免税农产品怎么计算进项税额
  • 捐款属于什么会计科目类别
  • 进项税加计扣除申报表怎么填
  • 计提工资当月要结转吗?
  • 增值税专用发票的税率是多少啊
  • 以前年度多计提的附加税怎么调账
  • 交际应酬性支出是什么
  • 对公账户自己扣钱
  • 无偿调入固定资产账务处理
  • 存货的毁损通过什么科目核算
  • php timeout
  • 社保基数跟个税差1仟多有风险吗
  • 职工医保报销后病情会泄露给单位吗
  • 企业计提的医疗保险属于企业设定提存计划的内容
  • ps的cc和sp
  • 信息技术服务费税收编码
  • sql数据库移动
  • 金税卡报税流程
  • db2比较大小
  • 增值税抵扣勾选最晚日期
  • 其他单位无偿过账合法吗
  • 生产加工企业辅导资料
  • 因管理不善材料被盗应记啥科目
  • 业务招待费可以进项抵扣吗
  • 广告设计合同属于什么合同
  • 迟到扣发工资
  • 会议费报销管理办法
  • 发票提前开能入费用吗?
  • Linux/Mac MySQL忘记密码怎么办
  • nmeo.exe是什么
  • mssearch.exe - mssearch是什么进程 有什么用
  • 建立一个新用户并把它加入wheel组,设置用户密码为123
  • unity控制
  • ugui scrollview
  • opengl混合模式
  • 一个监控网卡流量够用吗
  • jquery 鼠标
  • javascript的应用
  • linux用python
  • javascript中br
  • linux shell脚本命令
  • python基础教程视频教程
  • python面向
  • 江苏省高新区地图
  • 税务局电话咨询电话
  • 国家税务总局云平台网址
  • 用户卡,税控卡怎么办理
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设