前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >逻辑删除与联合索引冲突处理

逻辑删除与联合索引冲突处理

作者头像
阿超
发布2022-08-17 21:12:16
5720
发布2022-08-17 21:12:16
举报
文章被收录于专栏:快乐阿超快乐阿超

早知今日读书是,悔作从前任侠非。——李欣

今天发现联合唯一索引和逻辑删除冲突了,导致我这边已删除的数据还具有唯一索引的约束

本来一开始是考虑要不要在删除前手动将数据清空一下,但这样感觉并不优雅

然后今天跟朋友探讨了下,决定使用datetime作为逻辑删除字段的类型,如果未删除,则字段为魔法值的固定时间,已删除,则设为删除时的时间

使用Mybatis-plus能够优雅实现:

将逻辑删除字段如下配置即可

代码语言:javascript
复制
/**
 * 逻辑删除 已删除为删除时间,未删除为null
 */
@TableLogic(delval = "NOW()", value = "'2001-01-01 00:00:00'")
private LocalDateTime delFlag;

如果不是用注解,也可以配置全局,全局配置的方法我之前写过一篇博客,只要把对应的删除值修改一下即可

然后对应的数据库联合唯一索引,将其关联上

最后效果也是很棒:

image-20211107232254433
image-20211107232254433

可以看到查询自动带上了设置的日期

而我们进行删除时也成功设为NOW()

image-20211107232354812
image-20211107232354812

这里对应的代码实现com.baomidou.mybatisplus.core.metadata.TableInfo#formatLogicDeleteSql

image-20211020183235465
image-20211020183235465
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档