带时间戳的逻辑删除

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”的日期类型的列来指示该行是否已被删除。所以答案是肯定的。

【讨论】:

以上是关于带时间戳的逻辑删除的主要内容,如果未能解决你的问题,请参考以下文章

在 PostgreSQL 中使用带时间戳的 BETWEEN

带时间戳的 DB2 变量

效率:删除具有相同时间戳的行,同时仍然具有该时间戳的第二列的中值

在带有/不带时区的日期或时间戳的查询中处理 generate_series()

pyspark 数据框删除具有较旧时间戳的重复值

我正在使用 google bigquery,我想在特定时间段后删除具有时间戳的行