带时间戳的逻辑删除
Posted
技术标签:
【中文标题】带时间戳的逻辑删除【英文标题】:Logical delete with a Time stamp 【发布时间】:2014-09-22 23:45:21 【问题描述】:我更喜欢从逻辑上而不是物理上删除数据库中的记录。用“已删除”标志标记记录更好还是使用时间戳更好?
例如,我们可以为每个需要执行逻辑删除的表添加一个额外的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】:一种常见的模式是使用名称为“DeletedAt”或“DeletionDate”的日期类型的列来指示该行是否已被删除。所以答案是肯定的。
【讨论】:
以上是关于带时间戳的逻辑删除的主要内容,如果未能解决你的问题,请参考以下文章
效率:删除具有相同时间戳的行,同时仍然具有该时间戳的第二列的中值