唯一索引和逻辑删除冲突

唯一索引和逻辑删除冲突
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

一、 场景

在数据表结构设计的时候有同时存在唯一索引和逻辑删除,通常逻辑删除is_deleted是取值范围01,当删除同一个唯一索引字段值时,就会失败。

二、 解决方案

2.1 物理删除

不再设置逻辑删除标志位,直接物理删除,这依赖业务数据的特性。

2.2 历史表

每个表新建一个历史表,存储已经删除的历史数据,缺点是大量的历史表。当然还可以参考mysql schema的table表来设计,存储schema和tableName,然后行数据json类型存储,需要根据场景选择。

2.3 删除时间

删除标志位不使用01,使用删除时间戳来替代,同一秒时间,相同唯一字段可能性基本为零,使用初始值0或者Null来作为未删除标志符,会占用一定的存储空间,但可以显示删除时间。

2.4 删除设置为Null

删除字段删除标识设为Null,未删除设置为0。

本文来源huayang183,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/18412

发表评论