明明加了唯一索引,为什么还是产生重复数据?

news2024/12/26 13:44:52

距离上次发稿 已经过去好久了,
开搞,2023第一稿;

在这里插入图片描述
.还原问题现场
前段时间,为了防止商品组产生重复的数据,我专门加了一张防重表。

问题就出在商品组的防重表上。

具体表结构如下:

在这里插入图片描述

为了保证数据的唯一性,我给那种商品组防重表,建了唯一索引:
在这里插入图片描述

根据分类编号、单位编号和商品组属性的 hash 值,可以唯一确定一个商品组。

给商品组防重表创建了唯一索引之后,第二天查看数据,发现该表中竟然产生了重复的数据:

在这里插入图片描述
表中第二条数据和第三条数据重复了。

这是为什么呢?

2.唯一索引字段包含 null
如果你仔细查看表中的数据,会发现其中一个比较特殊地方:商品组属性的 hash 值(model_hash 字段)可能为null,即商品组允许不配置任何属性。

在 product_group_unique 表中插入了一条 model_hash 字段等于 100 的重复数据:
在这里插入图片描述
从上图中看出,mysql 的唯一性约束生效了,重复数据被拦截了。

接下来,我们再插入两条 model_hash 为 null 的数据,其中第三条数据跟第二条数据中 category_id、unit_id 和 model_hash 字段值都一样。
在这里插入图片描述

从图中看出,竟然执行成功了。

换句话说,如果唯一索引的字段中,出现了 null 值,则唯一性约束不会生效。

最终插入的数据情况是这样的:

当 model_hash 字段不为空时,不会产生重复的数据。
当 model_hash 字段为空时,会生成重复的数据。
我们需要特别注意:创建唯一索引的字段,都不能允许为 null,否则 mysql 的唯一性约束可能会失效。

下面的几种不同方案 点击文末跳转原文,这几种思路在不同的业务场景还是值得学习的。

3.逻辑删除表加唯一索引

3.1 删除状态 +1
3.2 增加时间戳字段
3.3 增加 id 字段

  1. 重复历史数据如何加唯一索引?

5.给大字段加唯一索引
5.1 增加 hash 字段
5.2 不加唯一索引
5.3 redis 分布式锁

6.批量插入数据

来源 :https://mp.weixin.qq.com/s/rVAeULuYYoL_50dlTeEydg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《吴军数学通识讲义》读后感

先抛一个问题,一副扑克牌随机发牌,均匀发给三人,已知你手上有两张K,另外两张K,每人一张的概率大,还是分给一个人的概率大,或者这两种场景概率一样? 从小开始学数学,但毕业…

PostgreSQL实战之物理复制和逻辑复制(六)

目录 PostgreSQL实战之物理复制和逻辑复制(六) 6 延迟备库 6.1 延迟备库的意义 6.2 延迟备库部署 6.3 recovery_min_apply_delay参数对同步复制的影响 PostgreSQL实战之物理复制和逻辑复制(六) 6 延迟备库 延迟备库是指可以配…

Flink官方例子解析:Flink源码子项目flink-examples

1. 简介 很多朋友在学习Flink的时候都希望能有个demo代码来参考实践,于是在百度或者Google一顿搜索,虽然能找到很多demo代码,但是这些demo要么版本比较旧,要么代码不全,根本跑不通。 其实,Flink官网就提供…

10、矩阵分析

目录 一、向量和矩阵的范数运算 二、矩阵的秩 三、矩阵的行列式 四、矩阵的迹 五、矩阵的化零矩阵 六、矩阵的正交空间 七、矩阵的约化行阶梯形式 八、矩阵空间之间的夹角 MATLAB 提供的矩阵分析函数: 一、向量和矩阵的范数运算 (1)在MATLAB中,…

不平衡数据集的建模的技巧和策略

不平衡数据集是指一个类中的示例数量与另一类中的示例数量显著不同的情况。 例如在一个二元分类问题中,一个类只占总样本的一小部分,这被称为不平衡数据集。类不平衡会在构建机器学习模型时导致很多问题。 不平衡数据集的主要问题之一是模型可能会偏向多…

笔记本怎么录制屏幕?笔记本录屏有这一款就够了

为了携带方便,很多小伙伴都选择笔记本电脑作为自己学习和办公的工具。在使用笔记本时,我们有时需要对它进行屏幕录制,那你知道笔记本怎么录制屏幕吗?怎样才能又快又好地录制屏幕?今天小编就给大家带来一款能高效录制笔…

DBCO-SS-NH2,二苯并环辛炔-二硫键-氨基,DBCO-SS-amine

DBCO-SS-NH2,二苯并环辛炔-二硫键-氨基,DBCO-SS-amine 英文名称:DBCO-SS-NH2、DBCO-SS-amine 中文名称:二苯并环辛炔-二硫键-氨基 外 观: 浅黄色或白色固体 分子式: C23H25N3O2S2 分子量: 439.59 存储环境:尽可能储存在-20℃环境下&…

网络原理(TCP/IP)(5)

2.IP协议的核心功能:能够在两点之间规划出来一条合适的路径 1)地址管理:通过一系列的规则,可以把网络上设备的地址给描述出来 2)路由地址:根据当下的源IP和目的地址,规划成一条合适的路径,啥叫合适?关键是看…

【IoT】项目管理:做好敏捷管理,从敏捷看板开始

随着移动互联网、软件即服务(SaaS)和基于云计算的快速发展,你需要加快你的产品开发周期,将重点工作放在定义核心功能集的前端。 你可以从敏捷软件开发思想中借鉴一些最佳实践,并将这些实践应用于团队管理中。 敏捷思想…

React+eggjs+mysql实现多文件上传

文章目录一、开发环境二、数据库准备files表【视项目需求不同可略过,一般小项目可忽略】1.数据库准备files表的目的2.表结构三、后端接口准备1.配置config2.router.ts中配置路由3.创建controller4.创建service①为什么做这步②创建service/common文件③service/comm…

IronWebScraper for .NET 2023.1 Crack

用于从 HTML Web 应用程序中提取干净的结构化数据的 C# 框架。 IronWebScraper for .NET 2023 :Adds support for Microsoft .NET 6 and .NET 7.January 27, 2023 - 17:25 New Version ::: Added support for Microsoft .NET 6 an…

【Java】SpringCloud使用

SpringCloud使用 发起远程调用 根据订单id查询订单的同时,把订单所属的用户信息一起返回,但订单信息和用户信息分属两个不同的模块。 本质上是订单模块向用户模块发起请求,在spring中使用resttemplate发起。 MapperScan("cn.itcast.o…

电脑配置怎么看?这3种方法就可以轻松查看

在我们的日常生活和工作中,我们越来越离不开计算机。对于一台好的电脑,首先,我们需要了解它的配置,以便更好地选择它。电脑配置怎么看?可能还有很多人不知道。别担心,本篇文章就是来教会你如何查看电脑的配…

Android studio集成flutter

1.获取Flutter SDK 视窗安装|扑动 (flutter.dev) 2.配置环境变量 3.Android Studio安装Flutter插件 4.打开管理窗口cmd,输入flutter doctor。 5.因为第二步是感叹号(如下图),需要run: flutter doctor --android-licenses&#xf…

基础课程7:多线程与Pad可获得性

目标 GStreamer自动处理多线程,但在某些情况下,您可能需要手动解耦线程。本教程展示了如何做到这一点,此外,还完成了关于Pad可用性的阐述。更准确地说,本文档解释了: 如何为管道的某些部分创建新的执行线程Pad的可用…

SpringCloud之消息总线

spring CloudBus 将分布式的节点和轻量的消息代理连接起来。这可以用于广播配置文件的更改或者其他的管理工作。一个关键的思想就是,消息总线可以为微服务做监控,也可以作为应用程序之间相互通讯。 一、准备工作 本文还是基于上一篇文章来实现。按照官…

MySQL运维(二)MySQL分库分表概念及实战、读取分离详解

MySQL运维(二)MySQL分库分表详解、读取分离详解 1、MySQL分库分表相关概念 1.1 分库分表概念 1.1.1 分库的原因 分库:就是一个数据库分成多个数据库,部署到不同机器。 如果业务量剧增,数据库可能会出现性能瓶颈,这时候我们就需…

盘点那些免费好用的高清录屏软件,7款宝藏软件(2023年新版)

有不少的小伙伴私信小编,希望小编能够分享一些好用的高清录屏软件。那么今天,小编就给大家盘点一下那些免费好用的高清录屏软件吧!这些都是小编亲自体验过的,有需要的小伙伴赶紧码住收藏,这些宝藏软件错过就难找了&…

即时通讯开发之详解TCP/IP中的ICMP 协议、ping 和 Traceroute

前面讲到了,IP 协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完 成。其中一个重要的模块就是 ICMP(网络控制报文)协议。当传送 IP 数据包发生错误--比如主机不可达,路由不可达等等,ICMP 协议将会把错误信息封包,然后传送回给…

拉伯证券|兔年资本市场三大重点

近来,承受《证券日报》采访的多位专家展望兔年资本商场,称深化推动股票发行注册制变革、稳步扩展准则型敞开以及防备化解严重危险是三大重点工作。 申万宏源证券首席经济学家杨生长对记者表明,本年是我国经济康复到常态性增加的要害一年&…