在SQL Serveris_deleted
表中有一个列是一种好习惯,还是有另一种处理这个问题的方法?
我能想到的另一个解决方案是删除该行并将其插入到另一个表中以获取已删除的行。
最好的解决方案是什么?
提前致谢。
在SQL Serveris_deleted
表中有一个列是一种好习惯,还是有另一种处理这个问题的方法?
我能想到的另一个解决方案是删除该行并将其插入到另一个表中以获取已删除的行。
最好的解决方案是什么?
提前致谢。
依靠。
我会使用该IsDeleted
字段,然后时不时地运行一个归档过程,将这些行移到一个归档表中,这样它们就不会占用常见查询表中的空间,但仍然可以需要时取回。
我会说使用 IsDeleted 标志而不是删除行(或者 IsEnabled,我将其用于用户表之类的东西)。存储很便宜,仅仅因为行不再有效并不意味着数据一文不值。
我通常拥有的另一件事是 RowCreatedDateStamp 列,它多次有用。
回答你的问题可能有点晚了,但你真的应该阅读Udi Dahan在使用“软删除”中的帖子,如IsDeleted
专栏。
这真的取决于你的情况。将记录标记为已删除比真正的删除(没有约束检查、没有页面合并等)要少得多的 I/O,但它也会在您的代码中产生许多额外的复杂性,因为现在您的应用程序需要处理软删除到处记录。所有查询都必须考虑到这一点,因为有些可能甚至想要返回已删除的记录,有些则不能,等等。
另一件需要注意的重要事情是,由于法规或客户要求,您的应用程序可能需要硬删除。