在开发中,删除数据是必须要小心的,比如执行以下代码,那么表`student`中id等于2的记录就彻底删除了,这就叫硬删除。硬删除是物理删除,直接将该记录从数据库中删除。
delete from `student` where id = 2;
硬删除恢复数据是比较麻烦的,这个时候就出现了软删除。
软删除,又叫逻辑删除标记删除,我们并不是真的从记录中删除了这个数据,而是通过某个字段标记下这条记录的删除状态,isDelete。比如当isDelete字段为0的时候是删除状态,当isDelete字段为1的时候是未删除状态。由这个字段判断记录的状态。
比如筛选出删除状态的记录:
select * from student where isDelete = 0;
但是问题又出现了,随着业务数据的越来越多,有些数据是真的需要硬删除的。这个时候isDelete可以再赋予一个值,当isDelete=2的时候,就硬删除。或者在表中再添加一个字段isValid,isValid=0的话,那就真的删除。
delete from `student` where isValid = 0;
这样数据表的数据就不会产生大量冗余。
OK,这就是软删除和硬删除。感谢阅读!