数据库软删除设计
目录
软删除设计
常见方案
使用删除标识字段,通常为布尔类型(mysql tinyint)
使用 delete_at 时间类型字段,默认值为空,代表未删除,不为空则代表删除时间
优点:实现简单方便,框架支持较好
缺点:无法支持唯一索引
改进方案
对于使用了软删除的表,唯一索引上必须要加上软删除的字段
- 使用 delete_at 时间戳类型字段,不允许为空,默认值为 0,代表未删除,不为 0 则代表删除
- 使用 deleted_id 来作为软删除字段。默认值是 0(如果主键是字符串类型,默认为空字符串),如果是已删除的数据,那更新 deleted_id=id