位置: 编程技术 - 正文

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)

  • 售卖会卡,达标返现,怎么进行账务处理
  • 典当行借款合同需交印花税吗
  • 物流运输企业增值税税负
  • 个人独资企业个人所得税税率
  • 劳务派遣怎么做起来
  • 人力资源代缴社保合法吗
  • 事业专款支出形成的固定资产如何入账?
  • 收到的出口退税款一直有余额吗
  • 自行开发的软件如何确认为无形资产
  • 机打发票多久可以作废
  • 即征即退收入是否计入所得税
  • 车辆处置入账价值包括哪些
  • 存货相关的会计科目
  • 记账凭证领用材料如何填写
  • 企业贷款的利息都是固定的吗
  • win10自带的照片查看器
  • 计提当月电费账务处理
  • 总分类账是什么的依据
  • 初中英语的学科知识与能力主要考什么
  • 增值税的滞纳金怎么做账
  • php数据库分页是怎么实现的
  • php curl模块
  • 付给他人押金的会计分录
  • 个人所得税计提缴纳会计分录
  • 营改增之后账务怎么处理
  • php的数组函数
  • 涉税服务实务重点总结
  • 房屋租赁经营要交哪些税
  • 新准则委托代建 不得管理费
  • 购买股票的佣金计入
  • zend框架教程
  • 购入电脑可以入成本里吗
  • 企业利润总额为负
  • 旅行社差额征税税率是多少
  • 全网最详细的李白解说来了
  • 直接融资租赁案例
  • 润滑油一般纳税人税率是多少
  • 产权转移数据印花
  • 工会经费没有交能买发票吗
  • css选择上一个兄弟
  • access数据库干嘛的
  • mongorepository排序
  • 织梦相关文章调用
  • 在计算应纳税所得额时,纳税人因自然灾害
  • 行政事业单位福利费开支范围文件
  • 汽车修理费用会计分录
  • 商誉在资产负债表中如何体现
  • mysql大分页优化
  • 用负数表示的例子
  • 取得税控服务费会计分录
  • 简易计税方法适用什么服务
  • 上月财务费用多做了,本月怎么调
  • 五险一金会计科目分录
  • 环保局罚款记什么科目
  • 当你想弥补想还清
  • 库存现金盘点表监盘人是谁
  • 记账凭证的审核与编制可以是一个人吗
  • 数据库汉字转拼音
  • Windows Server 2008网络中禁止迅雷下载
  • Mac安装不了iTunes
  • Win7笔记本怎么连接wifi
  • win108080端口怎么打开
  • Linux VPS vsftp/proftpd FTP时间差八小时的解决方法
  • [置顶]电影名字《收件人不详》
  • 使用jquery实现的项目
  • js中数组操作
  • ntp配置详解
  • shell的变量分为哪三种
  • Android使用教程
  • 安卓初始化
  • JavaScript SweetAlert插件实现超酷消息警告框
  • JavaScript+html5 canvas制作的圆中圆效果实例
  • python中字典怎么用
  • 从重置手
  • js遍历foreach
  • 企业所得税调整情况说明
  • 残疾人交房产契税有优惠吗
  • 契税5年什么意思?
  • 电子就业协议签了还是应届生
  • 税务稽查增值税账务调整案例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设