删除数据一般分为软删除硬删除,软删除指在数据表中建立一个isDeleted字段,若删除本数据只需标记此字段而非实际删除数据,硬删除是指将数据从硬盘中实际删除。

以往我一般习惯性的采用硬删除的方式,将关联数据使用一个事务完成删除,但这样的缺点也显而易见,不具备可恢复性、如果增加新的关联数据必须一起删除,前阵子我开发的一个项目就出现了后期关联的新数据没在删除操作中加上,导致删除数据后浏览数据出错的情况。

今天看到的一篇文章中的几句话后就想通了,原文如下:

订单不是被删除的,是被“取消”的。订单取消得太晚,还会产生花费。
员工不是被删除的,是被“解雇”的(也可能是退休了)。还有相应的补偿金要处理。
职位不是被删除的,是被“填补”的(或者招聘申请被撤回)。

显然,硬删除大多数时候并不符合实际业务的客观发展,如果滥用硬删除会抹掉很多业务中的细节,破坏数据的一致性,所以我的结论是:“尽量避免硬删除,除非这条数据真的不再具有任何意义”

文章链接:https://blog.csdn.net/sinat_42483341/article/details/105723458

标签: none

添加新评论