软删除和我们常说的删除

本文探讨了软件开发中软删除的概念及其应用场景,对比硬删除的区别,并解释了为何选择软删除而非直接删除的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上次在处理项目中的一个异常的时候,定位到异常的位置是删除时候抛出的异常,然后最后的解决办法是使用@NotFound注解实现的。然后老师说这是一种软删除。当时只是大概知道什么意思,但是并不清楚到底是什么东西。今天简单学习了下。

什么是软删除

软删除又叫逻辑删除标记删除,与我们常说的删除不同,并不是真的从数据库中将这条记录去除,而是会设置一个字段,比如:isDelete来标记删除状态。

那就会产生下一个问题,为什么要有软删除呢?为什么不直接删除呢?

为什么会有软删除

在现实情况中,很多时候我们说的删除并不是真的是删除的本意,因为站在用户的角度来看,并不是一种删除的状态:

  • 订单不是被删除的,是被“取消”的。
  • 员工不是被删除的,是被“解雇”的(也可能是退休了)。
  • 职位不是被删除的,是被“填补”的(或者招聘申请被撤回)。

所以这些时候,我们并不能真的把记录删除,所以软删除就出现了。

当然,我们更希望用一下代表状态的词来代替isDelete,就比如我们项目中已经使用的:有效、停用、弃用等等。

与硬删除的比较

虽然软删除比较好,它能保证数据的完整性,但并不表示我们任何时候都要使用软删除。当我们确定某些数据真的不需要的时候,硬删除就成了必须。比如验证码。这种数据删除后就没有必要保存了。

总结

项目中的问题,本来的逻辑是清空原始数据,然后重新计算,再存入数据库中,所以这时使用了删除,数据库中就不应该存在那些数据,所以确实不应该使用软删除,还是应该使用常说的硬删除


友情链接:http://xingaiming.com/2015/12/db_design_dont_delete_data/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值