位置: 编程技术 - 正文

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
  • 个体没有地址怎么办理执照
  • 申请最高开票限额不超过10万元的无需事前实地查验
  • 企业季度所得税资产总额怎么填
  • 融资租赁要怎么做
  • 公司经营情况说明怎么写模板
  • 处置子公司合并抵消
  • 员工差旅补贴是否需要发票
  • 小规模纳税人没有达到起征点怎么申报附加
  • 未在规定期限内缴纳税款和滞纳金
  • 财产清查的会计分录
  • linux 数字
  • 未分配利润亏损怎么做分录
  • 机票增值税怎么计算
  • 预付账款退款怎么做会计分录
  • mac计算器怎么变小
  • Group policy client是什么意思中文翻译介绍
  • 年终奖税务筹划合法吗
  • gwsloader.exe是什么意思
  • 支付报刊杂志费
  • 脐橙产业可行性报告
  • Calanques de Piana岩层上的一个心形洞,法国科西嘉岛 (© joningall/Getty Images)
  • 缴纳水利建设基金计入什么科目
  • Vision Transformer 模型详解
  • gpts
  • typescripte
  • 2023华为OD机试题
  • js实现继承属性功能
  • 帝国cms建站实例教程
  • 农机销售融资贷款流程
  • 商业承兑汇票贴现率
  • 预计表示什么意思
  • 有限合伙企业属于企业法人还是非法人企业
  • 企业为职工支付的补充医疗保险费
  • 隔月发票退回是怎么回事
  • 所得税的汇算清缴日在资产负债表日后期间
  • 个人承包公司运输违法吗
  • 施工企业如何确定收入和成本
  • 外贸企业退税政策
  • 联营企业和合营企业的持股比例
  • 子公司提取盈余公积
  • 车票抵扣进项税怎么计算
  • 出售无形资产属什么科目
  • 数据库账号密码怎么修改
  • 高效管理者的三大技能 罗伯特卡茨
  • 简述linux几种主流发行版本及其特点
  • Win10系统开机出现问题pin码不可用
  • ubuntu16.04火狐打不开网页
  • dvd rom drive bbs priorities
  • windows无法更改设置
  • keyemain.exe是什么
  • windows7电脑怎么变快
  • win10系统故障恢复
  • perl 教程
  • 批处理自动确定
  • 噩梦剧情
  • vue导航组件
  • nodejs 导出excel
  • javascript的语句
  • jquery实现图片横向移动
  • python中sort()的用法
  • 小规模纳税人收到增值税专用发票怎么办
  • 税务绩效管理存在不足
  • 出口退税额与出口退税收入
  • 新四板企业哪里可以查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设