数据库逻辑删除如何实现字段唯一性

背景

在业务表设计中,删除数据一般建议不使用物理删除,而是使用逻辑删除,在逻辑删除时,就存在一个问题:如何保证表中字段唯一性

解决方案

  • 删除标志可以不局限为true、false,比如使用0表示未删除,-1、-2、-3.......表示已删除

  • 利用为null的字段不会和其他字段有组合索引的效果

  • 增加delete_time字段,同一时间内可能性几乎为0

如果有更好的解决方案可以留言交流

  • 如果使用的是PostgreSQL 

PostgreSQL支持条件索引,可以只对未被逻辑删除的记录创建唯一索引。

CREATE UNIQUE INDEX idx_code WHERE deleted = 0;

这样,只有未被逻辑删除的记录的code必须是唯一的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值