位置: 编程技术 - 正文

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

  • 办公楼租金如何定价
  • 代收代付保险费的差额可以放入营业外收入么
  • 直接计入当期损益的利得和损失,是指( )的利得或损失
  • 月末在产品的原材料定额费用计算公式
  • 非金融企业和金融企业
  • 库存商品内部划转怎么做账?
  • 报废资产处置收入怎么计税
  • 抵扣税款是什么意思呢
  • 房地产并购的税率是多少
  • 房租开的专票怎么做账
  • 税务申报零申报怎么操作
  • 医院医保统筹支付后还能报销吗
  • 旧设备出口要交增值税吗
  • 公司公章丢失登报后又找到了
  • 利息收入 开票
  • 因腐败因素形成的损失企业所得税如何处理?
  • 委托贷款是流动资金贷款吗
  • 公司面临清算,外包企业的员工怎么处理?
  • 去年管理费用多记账结账如何调账
  • win10版本激活码
  • 银行初级证书全称
  • 小规模纳税人免征增值税的账务处理
  • 暂估收入入账冲回如何会计分录
  • 期间费用为什么叫期间费用
  • 增值税进项税转出什么意思
  • vue引入mui
  • php编写网站
  • 金融企业营业税税率是多少
  • 企业重组税收政策汇编
  • 应收账款包括哪些
  • 购货返利
  • jquery 批量删除
  • 财务费用为负数是好事还是坏事
  • 增值税发票怎么抵税
  • 车间的办公费计入
  • vue组件强制刷新
  • 云原生是什么
  • ntpdate命令详解
  • 代扣代缴的企业所得税计入成本吗
  • 企业自建房出售给员工个人后还需要缴纳土地使用税么
  • 税控系统维护费普通发票可以全额抵扣吗
  • 小规模纳税人无票收入怎么申报
  • 持续经营利润是什么意思
  • three.js gui
  • 耕地税税率是多少
  • 用友t3制单日期定住不变
  • 买手机手续费怎么算的
  • 交通运输企业有什么优惠政策
  • 改良生产线发生的职工薪酬计入期间费用
  • 计算业务招待费扣除限额的基础包括营业外收入
  • MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问
  • 检测费账务处理
  • 公司注销流程是哪些
  • 实收资本有关会计科目
  • 跨年度暂估成本的账务处理
  • 应收的借方和应付的贷方相等
  • 税务开票系统怎么开票
  • 上年亏损本年要交税吗
  • 复式记账法的特点不包括
  • 账簿的类型有哪几种
  • mysql里的数据库在哪个位置
  • use crt secure
  • win7自带的软件
  • win7系统弹出好多停止运行程序
  • 最新版win10版本号
  • 设计模式中的行为模式
  • gdi双缓冲绘制
  • jquery解析json数据
  • [置顶]从lv2开始开挂的原勇者候悠闲的异世界生活
  • javascript:void(o)怎么解决
  • staticlayout 换行
  • python编程完全入门教程
  • html伸缩布局
  • python写邮箱
  • 税务安装步骤
  • 机构改革结束了吗
  • 安徽省税务局发票真伪查询平台
  • 上海房产税税收
  • 内江市税务局
  • 中国税务报客户端
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设