软删除概述
背景
软删除(Soft Delete)是相对于硬删除(Hard Delete)而言的,它又可以叫做逻辑删除或者标记删除。
这种删除方式并不是真正地从数据库中把记录删除,而是通过特定标记在查询时将此记录过滤掉。虽然数据在应用界面或者API查询时候已不可见,但是仍保留在数据库中。
原理
AstroPro实现软删除的原理是在需要进行软删除的对象上额外生成一个(`soft_delete_flag` bigint(20) NOT NULL DEFAULT '0')的字段。
- soft_delete_flag = 0表明当前数据没有被删除。
- 当进行软删除操作时,soft_delete_flag会被更新成被删除时的时间戳。
使用说明

- 当勾选了“软删除策略”后,生成的代码会有如下变化:
- 在勾选软删除策略的对象上会额外生成一个字段 (`soft_delete_flag` bigint(20) NOT NULL DEFAULT '0')。
- 删除和批量删除的API上会额外生成一个Boolean类型的参数hardDeletion,在调用删除相关API时,如果hardDeletion传入true则进行物理删除,否则进行逻辑删除。
- 查询API上会额外生成一个Boolean类型的参数softDeleted,当不传入softDeleted或softDeleted传入false的时候,只查询未被删除数据(soft_delete_flag = 0 的数据)。当softDeleted参数为true时,查询将仅基于主键进行,忽略soft_delete_flag的值。
- 批量查询API中soft_delete_flag字段会作为一个非必填的参数添加到请求参数中。
- 当勾选了“恢复软删除”后,生成的代码会有如下变化:
额外生成两个API,一个是单条数据的恢复软删除(将被删除的数据的soft_delete_flag重新设置为0),一个是批量数据的恢复软删除。