位置: 编程技术 - 正文

MySQL中的唯一性约束与NULL详解(mysql设置唯一值)

编辑:rootadmin

推荐整理分享MySQL中的唯一性约束与NULL详解(mysql设置唯一值),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql数据唯一性,mysql唯一标识,mysql唯一键和唯一索引,mysql设置唯一值,mysql唯一键和唯一索引,mysql唯一性索引,mysql设置唯一值,mysql字段唯一,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

之前做的一个需求,简化描述下就是接受其他组的 MQ 的消息,然后在数据库里插入一条记录。为了防止他们重复发消息,插入多条重复记录,所以在表中的几个列上加了个唯一性索引。

这时 A,B,C 三列都是不允许 NULL 值的,唯一性约束也是 work 的。

后来由于需求的变化,修改了以前的唯一性约束,又多加了一列。(至于为什么加就不赘述了)。

新加的 D 是类型是 datetime, 允许为 NULL,默认值为 NULL。之所以默认值为 NULL,是考虑到不是所有记录都有这个时间的, 如果强行设置一个 Magic Value (比如'-- ::‘)当做默认值,看起来很奇怪。

蓝后。。。就出问题了。加了 D 之后,唯一性约束基本就失效了。

MySQL中的唯一性约束与NULL详解(mysql设置唯一值)

上面的三条 SQL 都是可以执行成功的,数据库中会有多条一样的记录。可按照我们以前的构想,在执行后两条 SQL 时 应该抛出 ‘Duplicate key' 的异常的。

后来查了一下,才发现其实 MySQL 官方文档上已经明确说了这一点, 唯一性索引是允许多个 NULL 值的存在的:

从下表中也可以看出来不管是采用什么类型的存储引擎,在建立 unique key 的时候都是允许多个 NULL 存在的。。。。

细想想,其实也蛮合理,毕竟在 MySQL 中认为 NULL 代表着“未知”。 在 SQL 中,任何值与 NULL 的比较返回值都是 NULL 而不是 TRUE, 就算 NULL 与 NULL 的比较也是返回 NULL。

所以只能 fix 了。。。解决办法也蛮简单粗暴的,直接把线上数据刷了一遍,将“-- ::”作为默认值,然后把那列改为不允许为 NULL 的了,咳咳。

MySQL 官网上也有蛮多人讨论过这个问题,一部分人认为这是 MySQL 的 bug, 另一部分则认为是一个 feature,附上链接。

MySQL Bugs: #: unique index allows duplicates with null values

总结

标签: mysql设置唯一值

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

上一篇:MySQL数据库操作的基本命令(mysql数据库操作题)

下一篇:Mac下安装mysql5.7.18的详细步骤(mac下安装python)

  • 小规模纳税人通用申报表
  • 进料加工为什么要差额确认收入呢
  • 等线补交以前年度附加税会计分录
  • 公司给个人分红会计分录
  • 企业关于发票的管理及要求
  • 其他综合收益包括资本公积吗
  • 土地转让的税费怎么算
  • 增值税发票密码忘记了怎么办
  • 中外合资经营企业的经营期限
  • 营业范围之外的产品可以出售吗
  • 纳税调整后所得怎么算
  • 转让购入的设备税率
  • 砂石加工行业交什么税
  • 购买金税盘需要法人去税务局进行信息采集吗
  • 去新建的外贸公司好不好
  • 水资源税的纳税义务人
  • 公司注销了帐户钱能办款
  • 预收的电费增值税如何缴纳?
  • 接受应税劳务的会计分录
  • 户外广告经营总额
  • macos12支持设备
  • 启动器
  • 快速迅雷
  • 企业废业实收资产怎么算
  • PHP:xml_set_default_handler()的用法_XML解析器函数
  • 跨年退税怎么处理
  • 老大心态是什么意思
  • kb4499164安装失败怎么办
  • 电脑卡慢咋办
  • PHP - EasyUI DataGrid 资料取的方式介绍
  • antd-vue-pro
  • 【强化学习探索01】Win10 下gym安装
  • 用人单位垫付生育津贴怎么算
  • 销售费用凭证
  • yii框架搜索分页modle写法
  • 过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你
  • 公司注册资金多长时间可提出来
  • 长投转可供
  • 购买的服务怎么做账
  • 以前年度损益调整结转到本年利润吗
  • 研发费用计入科目
  • 预付账款主要核算哪些内容
  • 定额税率举例子
  • 成本利润率指的是
  • 房开企业预缴增值税附加税费
  • 旅行社差额征税全额开票和差额开票
  • 融资租赁业务利润怎么算
  • 小规模纳税人未开票收入如何申报增值税
  • 快递公司成本分析
  • 财务费用汇兑损益
  • 被选为工会代表
  • 企业防止股权收益的措施
  • 业务收入和营业收入关系
  • 物流公司保险怎么买
  • Linux环境mysql5.7.12安装教程
  • 数据库汉字转拼音
  • win10设置设备
  • 解决ubuntu和win10关机重启界面不动
  • bootcamp您的磁盘未能分区
  • linux关闭sh
  • mac自带计算器
  • centos的防火墙怎么关
  • 电脑升级到win11会卡吗
  • 安装怎么弄
  • 【学习ARToolkit小记之初】 ARToolkit在VS2010(Win7 64位)下的配置及第一个开发程序的编译与运行
  • html文件怎么用ie浏览器打开
  • css选择器类选择器
  • cocos游戏开发教程
  • unity开发的小游戏
  • bat脚本自动点击按钮
  • Unity3D游戏开发培训课程大纲
  • springmvc框架下tomcat服务器数据库密码如何加密
  • python 解析js
  • jquery.cookie.js用法实例详解
  • android接听电话
  • 四川省地方税务局2017年1号公告
  • 社保银行代扣收费吗
  • 境外所得税额扣除的计算
  • 地税局契税发票编号查询
  • 武汉洪山实验中学是初中还是高中
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设