之前有张表,因为业务逻辑并不复杂,直接做的硬删除,现在因为某些原因,需要保留删除的数据,所以改为软删除。
查阅 gorm 文档,发现 gorm中:一个 model 有 DeletedAt
字段,他将自动获得软删除的功能! 当调用Delete
方法时, 记录不会真正的从数据库中被删除, 只会将DeletedAt
字段的值会被设置为当前时间。
使用了软删除之后,发现 gorm 在SELECT
等语句时,会默认在WHERE
语句中,加上一句 WHERE deleted_at is NULL
.
那么如果后悔了,怎么恢复软删除的数据呢? gorm 也有相应的方法:
sql
1 | -- 查找包含软删除后的数据 |
sql
1 | -- 恢复软删除的数据 |
sql
1 | -- 彻底删除软删除的数据 |