SQL Server 数据库 - 删除记录或设置 IsDeleted 标志?

标签 sql database

<分区>

Possible Duplicate:
What to do when I want to use database constraints but only mark as deleted instead of deleting?

在频繁使用的数据库中设置某种“IsDeleted”标志以简单地标记要删除的记录(然后稍后删除它们)是否更合适,还是应该直接删除它们?

我喜欢 IsDeleted 标志方法,因为它提供了一个简单的选项来恢复数据,以防出现严重错误,我什至可以为用户提供某种“撤消”功能。我正在处理的数据相当重要。

我不喜欢 IsDeleted,因为它确实会干扰数据检索查询,因为除了常规查询外,我还必须按 IsDeleted 标志的状态进行过滤。查询只使用一个索引,所以我还假设这会极大地减慢速度,除非我创建复合索引。

那么,怎样做比较合适呢?是否有更好的“中间方法”来获得两者的好处,您在使用什么以及为什么?

最佳答案

根据经验,我从不删除任何数据。我从事的业务类型总是存在诸如“取消的客户中有多少人拥有尺寸为 4 的小部件”之类的问题,如果我删除了客户,我怎么能得到它。或者更有可能的是,如果从小部件表中删除了一个大小为 4 的小部件,这将导致引用完整性问题。 “事件”位标志似乎对我有用,并且使用索引不会对性能造成太大影响。

关于SQL Server 数据库 - 删除记录或设置 IsDeleted 标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/933780/

相关文章:

sql - 对带有 Case 语句的Where进行矛盾条件检查

php - 在 PHP 中使用外键将行插入表中

mysql - phpBB3 SQL 数据库表不存在错误;无法从备份导入或删除损坏的数据库

mongodb - mongodb在运行吗?

mysql - 定义别名列的大小

mysql - SQL交叉表查询查看一些交易的总和

mysql - 按提供范围内每个日期的历史日期分组

sql - 更新行组以从行 SQL 的总和中删除特定的总金额

php - MySQL 中两列的不同值

java - 交易后刷新实体