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

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

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

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

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

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

相关文章
|
5月前
|
存储 关系型数据库 索引
10. 在一个非主键字段上创建了索引, 想要根据该字段查询到数据, 需要查询几次 ?
在非主键字段上创建索引,查询数据通常需两次。对于MyISAM,先通过索引找到数据行指针,再获取数据;而InnoDB则先找主键ID,再从主键索引中查找数据。
36 0
|
2天前
|
数据库 索引
联合索引和单独列索引哪个更好
【10月更文挑战第15天】联合索引和单独列索引哪个更好
19 2
|
3月前
|
关系型数据库 MySQL 数据库
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。
|
5月前
|
数据库
如何解决逻辑删除is_del与数据库唯一约束冲突
如何解决逻辑删除is_del与数据库唯一约束冲突
124 0
|
存储 SQL Java
Mysql数据库表字段设计优化(状态列)
初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
533 0
Mysql数据库表字段设计优化(状态列)
测试关于索引的操作- 修改索引
测试关于索引的操作- 修改索引
测试关于索引的操作-创建索引
测试关于索引的操作-创建索引
|
SQL 存储 缓存
索引不是越多越好,理解索引结构原理,才有助于我们建立合适的索引!
MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。
648 0
|
存储 SQL 关系型数据库
|
SQL MySQL 关系型数据库
Java实现获得MySQL数据库中所有表的记录总数可行方法
可以通过SELECT COUNT(*) FROM table_name查询某个表中有多少条记录。本文给出两种可行的Java程序查询所有别的记录方法,感兴趣朋友可以了解下 在MySQL中,可以通过SELECT COUNT(*) FROM table_name查询某个表中有多少条记录。如果想知道某个数据库中所有别的记录总数应该怎么做呢?本文给出两种可行的Java程序,解决该问题。 1. 首
1799 0