我有一个数据库和一个“库存”表,其中包含一个商店的产品。每种产品都使用表中“id”列中设置的id号进行标识。我希望能够从表中删除产品,但保留已删除产品的id号,以便将来将产品插入数据库。作为演示,我插入了4个项目,并将它们全部命名为“test”
作为一个例子,我将“删除的”产品命名为“vacio”(西班牙语中为空),以显示我删除的产品。
现在,如果将来要添加另一个产品,id号2是未使用的,我想添加具有该id号的产品,而不是4(遵循给定的示例)。
delete查询是不好的,因为它也会删除id号,所以它是不允许的。我考虑过检查表中包含值“vacio”的第一行,并在除id以外的所有字段中使用update查询,但这感觉不太“优雅”,效率也不高,因为它需要多次更新值。有什么好办法吗?
2条答案
按热度按时间mf98qq941#
实际上,我并不建议重用旧的标识符。首先,这会阻止您使用
auto_increment
特性,这意味着您需要为每次插入手动处理列:这增加了复杂性,而且效率不高。此外,如果有其他表引用产品id,则可能会导致数据库中的完整性问题。但如果你真的想这么做:我会选择删除选项。如果有外键引用该列,请确保它们具有
on delete cascade
选项已启用,以便在删除产品时从相关表中正确清除数据。然后,您可以使用以下查询在下次创建新产品时填补第一个可用的空白:
oxalkeyp2#
您可以有一个新列estado来处理记录是活动的(1)还是非活动的(0)。然后,要只获得“未删除”的记录,只需按新列进行筛选。这样,您还可以防止将产品名称更改为“vacio”,这在将来可能有用。