使用PHP和SQL隐藏不再使用的记录,而不是永久删除它


To hide the no longer used record instead of deleting it permanently by using PHP and SQL

我正在为我最后一年的项目做一个送餐系统。对于数据库,我需要隐藏不再使用的记录,而不是永久删除该记录。例如,如果卖家不想出售某顿饭,他们可以禁用该顿饭,但该顿饭的记录仍在数据库中可用。我需要通过使用PHP和SQL来实现这一点。有人能给我一些如何实现这一目标的想法吗?提前谢谢。

您所指的功能叫做软删除。在软删除中,从数据库表中逻辑删除记录,而不实际删除记录本身。

实现软删除的一种常见方法是添加一列,该列跟踪列是否已被软删除。您可以将TINYINT(1)类型用于此目的。

您的表创建语句看起来像这样:

CREATE TABLE yourTable (`deleted` TINYINT(1), `col1` varchar, ...)

要查询出未被逻辑删除的记录,可以使用:

SELECT *
FROM yourTable
WHERE deleted <> 1

如果需要的话,有一个软删除列也可以很容易地删除过时的记录。

在许多情况下,额外的deleted列是一个不错的选择。但你必须非常小心,总是检查它,在某些情况下很难控制它。

另一个好的选择是具有相同结构的"影子表",并将删除过程更改为先复制到影子表,然后删除。这意味着您的原始表可以安全使用,但您不能对所有数据进行查询(尽管UNION有帮助,但这并不容易)