存在逻辑删除的表字段上建立唯一索引的巧办法 (逻辑删除与唯一索引)

简介: 设计数据库唯一索引时,经常会碰到唯一删除的键值,导致很难处理,这里就简单介绍一种巧办法,帮你快速解决该问题

存在逻辑删除的表字段上建立唯一索引的巧办法

首先,我们肯定是清楚地知道唯一键值+逻辑删除位如果联合创建唯一索引的话,只能最多存在两条数据,无法满足不断删除新增的需求,所以需要一个巧妙的办法去实现有逻辑删除标志位的唯一索引方式

既然有逻辑删除的存在,我们其实可以通过额外增加一个字段,叫做逻辑主键,当创建新记录的时候,该键值保存为0,当删除该行记录时,则回填该行的主键,这样子我们会发现每次该记录 唯一键值+逻辑主键 都是不重复的,所以咱们就可以将该键值和唯一键值作为唯一索引

1643102184037_AD8E66DD-5131-48e5-B1E3-EDCAC8F91CEA.png

相关文章
|
Java fastjson API
Springboot 整合 xxljob 动态API调度任务(进阶篇)
Springboot 整合 xxljob 动态API调度任务(进阶篇)
7367 0
Springboot 整合 xxljob 动态API调度任务(进阶篇)
|
消息中间件 存储 中间件
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
【消息中间件】详解三大MQ:RabbitMQ、RocketMQ、Kafka
11215 1
|
缓存 JavaScript Cloud Native
阿里云发布 Spring Boot 新脚手架,真香
本文,围绕 spring initializr 框架,以 start.spring.io 为例,全面的给大家介绍如何使用和扩展这个框架,以及背后的运行原理。
57213 1
阿里云发布 Spring Boot 新脚手架,真香
|
数据库
如何解决逻辑删除is_del与数据库唯一约束冲突
如何解决逻辑删除is_del与数据库唯一约束冲突
371 0
|
消息中间件 架构师 Cloud Native
软考高级系统架构师论文,到底该怎么写
软考高级系统架构师论文,到底该怎么写
391 0
|
11月前
|
存储 JSON fastjson
再也不用心惊胆战地使用FastJSON了——序列化篇
本篇将主要介绍json序列化的详细流程。本文阅读的FastJSON源码版本为2.0.31。
3723 49
|
存储 缓存 网络协议
CDNJS/UNPKG/JSDelivr 太慢用不了,换成这些国内高速镜像
npm cdn, cdnjs, unpkg, jsdelivr, zstatic, zstatic.net, s4.zstatic.net
16123 4
|
SQL 关系型数据库 MySQL
当并发insert on duplicate key update遇见死锁:更新丢失
数据库死锁问题,是一个老生常谈且很常见的问题,网上也有非常多对于各类死锁场景的解析和复现,但凡和死锁有关,无外乎不涉及数据库隔离等级、索引、以及innodb锁等相关原因。但是我这个案例我搜遍了全网也没能找到比较相似情况。于是我想尽可能的复现出这种情况,找出死锁的原因,找出可能出现的隐患。问题的背景:我们的数据库中的发生死锁的表是具有”多列组合构建的唯一索引“(不包含
20774 4
|
NoSQL Redis
使用黑名单完成,Jwt退出登录操作
使用黑名单完成,Jwt退出登录操作
1348 0