使用时间戳进行逻辑删除

时间:2014-07-31 06:15:59

标签: sql sql-server database ado.net sql-delete

我更喜欢从逻辑上而不是从物理上删除数据库中的记录。用“删除”标志标记记录是否更好,否则最好使用时间戳?

例如,我们可以为需要执行逻辑删除的每个表添加一个额外的DateTime字段。因此,删除时只需更新字段......

UPDATE Client SET deleted = GETDATE() where Client.CID = @cid

如果它应该取消删除......

UPDATE Client SET deleted = NULL where Client.CID = @cid

因此典型的选择陈述看起来像......

SELECT * FROM client WHERE CID = @cid AND deleted IS NULL

我的主要要求是已删除的行应该能够恢复,并且应该能够轻松实现。

1 个答案:

答案 0 :(得分:1)

这是一个常见的模式,名称如" DeletedAt"或" DeletionDate",类型为date,用于指示该行是否已被删除。所以答案是肯定的。