本文阐述在图书管理API中采用软删除方案,将删除操作转换为UPDATE语句,在deleted_at列写入UTC时间戳而非物理删除,以实现数据可逆恢复与审计完整。所有面向用户的查询必须在DAO层统一附加deleted_at IS NULL过滤,确保已删除行对业务透明,避免幽灵数据。删除时使用SQLAlchemy Core的update,根据rowcount判断资源是否存在或已被删除,统一抛出NotFoundError并返回404。为提升性能,建立(deleted_at,id)复合索引,使未删除记录的过滤与排序均能高效利用索引。此外,特别强调了应用层生成时间戳的语义优势、全局查询过滤的一致性,以及唯一索引冲突和定期清理墓碑行等注意事项。
Fastapi
2
meytao