发布网友 发布时间:2022-10-29 04:24
共1个回答
热心网友 时间:2023-10-09 15:09
多数情况下,如果一张表 字段A 被设置成 唯一索引 后,重复数据不允许添加。这个时候如果有逻辑删除操作,可以将字段A与 deleted 字段建成 联合唯一索引 。似乎这样就可以了,然而事情并没有那么简单。
这里 deleted 字段使用0,1标识未删除与已删除。
创建表。
这里我们有一条数据, id=1, user_name=张三, deleted=0 。
我们先进行删除操作,将 deleted 字段更新为1。
然后我们在插入一条数据, user_name=张三 。
此时插入数据的 id=2 。
然而当我再次进行删除操作时:
会发现无法成功进行此操作。因为 user_name=张三,deleted=1 的数据已经存在了。
这个时候我们该怎么办呢!以前我也不知道怎么办,后来发现一种十分机智的办法。
那就是不用0和1标识deleted字段,使用0和一段时间戳标识删除字段
那么我们在进行逻辑删除的时候,只需要这样做:
这样就可以处理好逻辑删除和联合唯一索引多次删除的问题了。