gpt4 book ai didi

language-agnostic - 在数据库表中标记已删除的记录

转载 作者:行者123 更新时间:2023-12-04 07:44:01 25 4
gpt4 key购买 nike

有时您想将数据库表记录标记为已删除而不是永久删除它,对吗?

你是怎样做的?

到目前为止,我一直在使用 bool 值“已删除”字段,但我不确定它是否是一个好的方法。

最佳答案

就是这样 - 一个 bool 字段,表示记录已被删除。我使用它的几次,我称该字段 IsDeleted .

这通常被称为 逻辑删除 .

您可以在报告中尊重该字段 - 这意味着排除所有带有 IsDeleted = true 的记录。 .如果您有很多表和关系,这些查询可能会变得有点复杂。

此外,如果您对表有唯一约束,您可能会遇到一些问题。例如,如果在用户表中,用户有 IsDeleted = true并且电子邮件列是唯一的,我无法添加具有相同电子邮件地址的新用户。

有一些 ORM 会考虑这些字段 - 例如,如果存在名为“Deleted”或“IsDeleted”的列,SubSonic 2.2 不会删除记录,而是将此字段设置为 true。

一些相关资源:

  • Physical vs. logical / soft delete of database record?
  • Should I delete or disable a row in a relational database?
  • Working with SubSonic 'deleted' rows
  • ORM & Logical Delete

  • 作为替代方案,您可以添加审计表。

    关于language-agnostic - 在数据库表中标记已删除的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2938272/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com