我正在为我最后一年的项目做一个送餐系统。对于数据库,我需要隐藏不再使用的记录,而不是永久删除记录。例如,如果卖方不想出售某一餐,他们可以禁用该餐,但该餐的记录仍然可以在数据库中使用。我需要通过使用PHP和SQL来实现这一点。有人能给我一些关于如何实现这一点的想法吗?提前谢谢。
发布于 2016-07-26 16:10:04
您所指的功能是所谓的软删除。在软删除中,记录在逻辑上从数据库表中删除,而不实际删除记录本身。
实现软删除的一种常见方法是添加一个列,该列跟踪某个列是否已被软删除。为此,您可以使用TINYINT(1)类型。
您的表创建语句应该如下所示:
CREATE TABLE yourTable (`deleted` TINYINT(1), `col1` varchar, ...)要查询逻辑上没有删除的记录,可以使用:
SELECT *
FROM yourTable
WHERE deleted <> 1同时,如果有一个软删除列,也可以很容易地删除陈旧的记录。
发布于 2016-07-26 16:51:12
在许多情况下,额外的deleted列是一个很好的选择。但你必须非常小心,你总是检查它,在某些情况下,这是很难控制的。
另一个很好的选择是具有相同结构的“影子表”,并将删除过程更改为先复制到影子表,然后再删除。这意味着您的原始表是安全使用的,但是您不能对所有数据执行查询(虽然UNION可以帮助您)。
https://stackoverflow.com/questions/38594857
复制相似问题