替代数据库中的DELETE记录?

时间:2012-09-14 01:35:10

标签: sql database-design sql-delete

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

2 个答案:

答案 0 :(得分:9)

您可以在表格中添加bit列 - 称之为IsActiveIsDeleted

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

New record - IsActive = true
           - IsDeleted = false

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

Update - IsActive = false
       - IsDeleted = true

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

答案 1 :(得分:1)

我们使用与bluefeet相同的模式,效果非常好。

可能有助于您实现此目的的一些指示。

确保您的bit列不可为空。逻辑上没有理由不知道记录是否被删除,如果您不必担心null的测试,它会使编码更容易。

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