2

有人告诉我,我们永远不会从表中删除记录,因为将来会需要它。并且我可以知道除了 DELETE 之外还有什么替代方法可以使该行停用而不是从表中完全删除该行吗?

4

2 回答 2

10

您可以在表格中添加一bit列 - 将其称为IsActiveIsDeleted

当您INSERT数据时,请确保数据标记有正确的值:

New record - IsActive = true
           - IsDeleted = false

然后,当您使记录不可用时,您将以UPDATE相反的方式标记记录:

Update - IsActive = false
       - IsDeleted = true

当您运行查询时,您将根据此标志过滤数据。我们在整个系统中实现了这种类型的软删除,它可以隐藏记录。

于 2012-09-14T01:53:20.010 回答
1

我们使用与bluefeet相同的模式,并且效果很好。

一些可以帮助您实现这一点的指针。

确保您的bit列不可为空。从逻辑上讲,您没有理由不知道记录是否被删除,如果您不必担心测试null.

还将bit列设置为默认值0,然后您不必担心在插入语句中引用它。同样,从逻辑上讲,您永远不会插入已删除的记录,因此您不必记住在0添加记录时将值设置为。

于 2012-09-14T03:55:43.310 回答