数据库优雅地实现软删除
一提到软删除, 大家一定会说到, isDeleted这个字段, 或者叫status,关于这个可以看一下其他博友的文章
但是这种设计真的好吗, 其实针对不同的场景, 我们可以采用不同的设计方案来减少设计的复杂度。
考虑下面的场景: 你是后台API提供方, 调用者每天会定时向你发送一批全量数据, 这些数据每天都会有一定的差别, 比如新增了xx新的记录, 减少了xx条老的记录, 还有xx条记录不变, 你需要支持每天的实时查询, 保证数据的实效性, 过期数据不应该被显示。
如果使用isDelete这种方案, 试想一下, API后台的逻辑实现会比较复杂。难道你要求调用者向你提供那些数据应该被软删除么? 只能你自己在代码中做一个判断, 比如今天有哪些数据的 last_update_time仍旧没变的, 说到last_update_time, 那这个字段就是本文的亮点。 你只需保证有这一列, 并且使用数据库的控制, 比如mysql的 on update currenttimestamp, 那么你就无需做多余的判断, 只需要无脑的接受数据, 更新or插入就好了, 向外提供查询接口的时候只需要sql中where条件加一个last_update_time=今天就OK了。
这种方案的局限性也有, 就是在一些订单或者其他有复杂逻辑的地方不适用。 但起码证明了说每一个表设计都需要有last_update_time这个字段。
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: TestNG和PowerMock EasyMock的结合
- 下一篇:没有了