SuperAPI AI 工具集

soft-delete

数据与分析

查看项目

更新于 10-16 05:05

技能介绍

用途:实现软删除模式,让数据在逻辑上被删除但物理保留,以支持数据恢复、审计追踪、引用完整性保留和撤销功能。典型场景包括用户账号删除(如 GDPR 恢复期)、误删恢复、审计需求。

主要能力:用 deleted_at 时间戳替代物理 DELETE;所有查询默认过滤已删除记录;提供恢复、查看已删除记录、永久删除和按保留期批量清理的工作流。资料给出 TypeScript(Prisma 扩展)与 Python(SQLAlchemy Mixin 与自定义 Query)两种实现,以及数据库 schema 变更、定时清理任务和 API 路由示例。

必要用法:核心是把 DELETE 改为 UPDATE users SET deleted_at = NOW() WHERE id = '123',查询加 WHERE deleted_at IS NULL。Prisma 侧通过 $extends 对 findMany、findFirst、findUnique、count、delete、deleteMany 注入过滤或改写为软删除;SQLAlchemy 侧用 SoftDeleteMixin 与 SoftDeleteQuery 自动过滤,并提供 with_deleted() 查看已删除记录。数据库需 ALTER TABLE users ADD COLUMN deleted_at TIMESTAMP 并建立索引。

限制与注意事项:资料强调需为 deleted_at 建索引、使用部分索引、设置保留期、处理级联关系、处理唯一约束(如已删除邮箱应可复用),并列出常见错误:忘记在所有查询中过滤、未处理唯一约束、永久保留已删除数据、未索引 deleted_at、错误级联软删除。具体收费、平台支持范围等事实暂未提供。