我被告知我们永远不会删除表中的记录,因为将来需要它。我可以知道除了DELETE之外还有什么替代方法我可以停止行而不是从表中完全删除行吗?
答案 0 :(得分:9)
您可以在表格中添加bit
列 - 称之为IsActive
或IsDeleted
当您INSERT
数据时,请确保数据标有正确的值:
New record - IsActive = true
- IsDeleted = false
然后,当您使记录不可用时,您将执行UPDATE
以相反的方式标记记录:
Update - IsActive = false
- IsDeleted = true
运行查询时,您将根据此标志过滤数据。我们在整个系统中实现了这种类型的软删除,它可以隐藏记录。
答案 1 :(得分:1)
我们使用与bluefeet相同的模式,效果非常好。
可能有助于您实现此目的的一些指示。
确保您的bit
列不可为空。逻辑上没有理由不知道记录是否被删除,如果您不必担心null
的测试,它会使编码更容易。
同时将bit
列设置为默认值0
,然后您不必担心在插入语句中引用它。同样,从逻辑上讲,您永远不会插入已删除的记录,因此您不必记住在添加记录时将值设置为0
。