位置: 编程技术 - 正文

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)

  • 印花税按合同的多少收
  • 小规模附加税减半吗
  • 库存商品属于资产类会计科目吗
  • 自产产品用于广告要交消费税吗
  • 幼儿园固定资产登记表
  • 电子普通发票重新开
  • 企业利润表的主要内容
  • 找不到契税发票怎么办
  • 营改增前甲供材料如何纳税
  • 工会的会费收入如何记账
  • 公司领导培训费怎么入账
  • 印花税计提多了怎样更正
  • 财产租赁所得如何申报
  • 往年的制造费用怎么算
  • 不同项目的进项税可以抵销项税吗
  • 非公益性捐赠支出是永久性差异吗
  • 金税三期的内容
  • 规范合同签订的重要性
  • 销售不动产预收款纳税义务发生时间
  • 对公账户网银证书有效期多久
  • 生产性生物资产计提折旧的方法
  • 小微企业增值税减免政策
  • 职工餐厅账务处理
  • 2021最新版眼保健视频
  • win11桌面图标怎么设置
  • windows11咋样
  • 冲销去年暂估收入
  • windows闹钟
  • 公司整体收购协议书范本
  • 单位银行结算账户属于活期存款账户
  • 工程结算需要哪些施工方案
  • 购入材料会计分录怎么写
  • dotnetfx2.0
  • 手机短信是哪一年开始的
  • 计算企业应纳税所得额时,可以扣除的税种
  • 增值税常见账务处理方法
  • php格式图片
  • 接受捐赠旧的固定资产以什么价格入帐
  • 现代服务业进项税加计扣除申报怎么填
  • 制作个性化的奖杯或者奖状
  • PyTorch 深度学习实战 |用 TensorFlow 训练神经网络
  • 出资入股是什么意思
  • 建行E信通贴现需要发票吗
  • 申报完成后怎么处理
  • 政府专项补贴税收
  • 织梦cms为什么不维护了
  • 营改增有关事项的规定
  • 以前年度损益调整账务处理分录
  • 质保期内出现质量问题,一直没有修复
  • 财产租赁合同印花税率多少
  • 增值税一般纳税人认定标准
  • 增值税代扣代缴范围
  • 缴纳房产税和城镇房产税
  • 废料收入是什么会计分录
  • 资金占用费如何计算企业所得税
  • 应付账款是赊销方式吗
  • 现金日记账1月怎么记账
  • 排污费计入管理费用吗
  • 企业有外币账户怎样做账
  • 企业资质证书丢失怎么办
  • truncate可以删除部分数据
  • mysql密码怎么找回
  • ubuntu系统中安装微信步骤
  • mac怎么自动清理垃圾软件
  • Red Hat Enterprise Linux 4+Nginx 0.7.47+PHP5.2+MYSQL5.0+Memcache+eAccelerator收
  • mmtraylsi.exe是什么进程 有什么作用 mmtraylsi进程查询
  • WIN10系统怎么分屏
  • 微软内测
  • Linux操作系统支持虚拟内存吗
  • 批处理应用实例
  • 每天看30分钟手机可以吗
  • prototype用法
  • 定时软件有哪些
  • jquery与js
  • 九宫寓意和象征
  • android回调函数
  • 河北税务总局发票怎么开
  • 重庆网上申报税务操作流程
  • 劳办发1994第48号文全文原文
  • 北京供暖 2020
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设