逻辑删除与唯一索引冲突的问题

发布时间 2023-08-16 16:27:42作者: loveeeeee

逻辑删除字段原设计是 0表示未删除 1表示已删除

下面举例说明存在的问题和解决方案

一个班的学生学号必须保持唯一,因此建立了唯一索引。

如果删除了李明的信息之后,再录入李明的数据库无法插入成功。
为了支持逻辑删除,将学号字段 和 逻辑删除字段 建立联合索引

但是如果是第二次再次删除李明,因为有唯一索引这条数据是无法更新的
解决方案一:0表示未删除 非0表示已删除 删除时将逻辑删除字段修改为这条记录的主键值
解决方案二:逻辑删除字段使用时间类型,空表示未删除 非空表示已删除,删除时修改为当前时间