位置: 编程技术 - 正文

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个点的发票跟6个点区别
  • 哪些发票可以抵扣税
  • 进口设备消费税税率是多少
  • 所得税汇算清缴分录怎么做
  • 增值税免税是否计入营业外收入
  • 填写三季度预缴所得税申报表应关注哪些事项
  • 营改增 旅游服务
  • 关联企业借款利息税前扣除
  • 增值税专用发票抵扣期限
  • 购电子承兑汇票差额计入什么科目?
  • 购买电脑的方案
  • 股东借款可以免增值税吗
  • 境外服务收入免税范围
  • 建筑工程总包单位招聘
  • 私人转公账可以吗
  • 安装工程中安装工程与市政路灯工程界定不正确的是
  • 学校提供场地开发方案
  • 公司注销时资本要交税吗
  • 营改增之前有增值税吗
  • 小企业怎么申请建设用地
  • 税率变化应付账款怎么处理
  • 包装物及其押金的消费税的注意事项
  • 资产评估合同属于什么合同
  • 怎么查询个体还是公司
  • 固定资产清理和固定资产减值准备的区别
  • 总承包简易计税
  • 企业所得税预缴可以不交吗
  • 命令行基础
  • 企业如何做账报税流程
  • 新成立公司实收资本没到位该怎么做账
  • 个人抬头有什么用
  • sql代码大全
  • 税务局什么情况下可以停供发票
  • idea配置meaven
  • apk文件包下载
  • 美国人用什么英语词典
  • 信用卡收款怎么查询
  • 发票验证校验码为什么只能填6位
  • 先收到保险公司赔付然后赔给顾客医药费怎么做帐
  • 长期股权投资入账价值
  • 固定资产清理如何申报增值税
  • 存根联是自己留着吗
  • 汽车租赁属于经营租赁吗
  • 免税收入不征税收入计入收入总额吗
  • 计提未到期责任准备金的意义
  • 备用金超过时间会怎么样
  • 突然收到财付通转出的钱
  • 进项税额转出最终应转到哪里
  • 办公报销项目
  • 房地产企业预付账款会计分录
  • 备查账的登记主要以什么来表述
  • 如何控制自己不磨牙
  • linux/fs.h
  • 在linux2.4.0版本中
  • liunx系统常用命令
  • 开机后cpu占用高
  • intel的me
  • win8操作系统安装
  • 安装win8正在安装应用要多久
  • 笔记本运行WINCC不显示全屏
  • perl正则表达
  • js一维数组转树结构
  • Linux中scp命令获取远程文件的方法
  • 学习雷锋好榜样
  • shell 查找最新文件
  • javascript例题
  • 遮罩有什么作用
  • Python工程师面试题 与Python Web相关
  • javascriptwhile
  • [置顶]电影名字《收件人不详》
  • Android 仿 iphone 自定义滚动选择器
  • realm数据库连接
  • 对计划单列市税务局不服向谁复议
  • 无偿划转暂行规定
  • 医保月底结算规定是什么
  • 税务u盘是干嘛的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设