有时您想将数据库表记录标记为已删除,而不是永久删除它,对吗?
你是怎样做的?
到目前为止,我一直在使用布尔“已删除”字段,但我不确定这是否是一个好的方法。
就是这样 - 一个布尔字段,指示记录已被删除。我用过几次,我称该字段为IsDeleted
.
这通常被称为逻辑删除.
您需要尊重报告中的该字段 - 这意味着排除带有以下内容的所有记录:IsDeleted = true
。如果您有很多表和关系,这些查询可能会变得有点复杂。
此外,如果表上有唯一约束,您可能会遇到一些问题。例如,如果在用户表中用户有IsDeleted = true
并且电子邮件列是唯一的,我无法添加具有相同电子邮件地址的新用户。
有一些 ORM 会考虑这些字段 - 例如,如果存在名为“Deleted”或“IsDeleted”的列,SubSonic 2.2 将不会删除记录,而是会将此字段设置为 true。
一些相关资源:
- 数据库记录的物理删除与逻辑/软删除? https://stackoverflow.com/questions/378331/physical-or-logical-delete-of-database-record
- 我应该删除或禁用关系数据库中的一行吗? https://stackoverflow.com/questions/347160/should-i-delete-or-disable-a-row-in-a-relational-database
- 处理 SubSonic“已删除”行 https://stackoverflow.com/questions/1323414/working-with-subsonic-deleted-rows
- ORM 和逻辑删除 https://stackoverflow.com/questions/971230/orm-logical-delete
作为替代方案,您可以添加审核表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)