我更喜欢从逻辑上而不是从物理上删除数据库中的记录。用“删除”标志标记记录是否更好,否则最好使用时间戳?
例如,我们可以为需要执行逻辑删除的每个表添加一个额外的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
我的主要要求是已删除的行应该能够恢复,并且应该能够轻松实现。
答案 0 :(得分:1)
这是一个常见的模式,名称如" DeletedAt"或" DeletionDate",类型为date,用于指示该行是否已被删除。所以答案是肯定的。