sql - 带时间戳的逻辑删除

标签 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

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

最佳答案

这是一种常见的模式,名称为“DeletedAt”或“DeletionDate”、日期类型的列用于指示该行是否已被删除。所以答案是肯定的。

关于sql - 带时间戳的逻辑删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25051983/

相关文章:

mysql 工作台。如果我有模型,如何创建数据库

sql - SQL执行(#1066)

SQL 查询 : How to rearrange the output (Transpose? )

mysql - 在 where 子句中使用两组条件

c# - 在 C# 中从快照恢复 SQL Server 数据库

sql - 与 BizTalk 管理控制台 "Completed Instances"等效的 SQL 查询是什么?

database - Azure 流分析输出到 Azure Cosmos DB

php - 收集、管理数据并通过 API 提供

mysql - SQL查询-计算估计成本和实际成本

mysql - 错误: Cannot add foreign key constraint on CREATE TABLE