在我的网站上,一些供应商可以导入他们的文章。
我想为他们提供清理文章的选项(例如,删除不在导入文件中的文章)。
我首先想到的是在导入之前先删除该供应商的所有文章,但这可能会出现客户访问该站点而看不到任何产品(特定供应商的)的情况.
经过深思熟虑,我想到了另外两个解决方案:
- 导入产品并记住导入/更新了哪些产品(如果它们已经存在)并删除之后不在导入中的供应商的产品
- 导入另一个临时表中的产品,删除供应商的当前产品,然后将临时表中的产品复制到“真实”表中。
然而,这两种选择都可能存在一些问题。
- 假设记住所有导入/更新的产品真的是个好主意,因为有时它可能超过 100 万种产品?
- 是否可以删除当前产品并将产品从临时表复制到真实表,速度如此之快,以至于来访客户看不到任何产品的可能性很小?
也许我想出的选项还有更多问题。
或者也许还有其他一些选择可以做到这一点?
附言
在导入时“锁定”站点/锁定客户不是一种选择。
最佳答案
当我阅读您的问题时,我想到了两个解决方案:
在导入时启动“维护模式”,但这可能不是您想要的。抱歉没有阅读您最后的声明。- 一件一件地导入(或删除)商品,因为这样一来,用户在任何给定时刻最多只会丢失一件商品。不过,这里有几个注意事项需要考虑:
- 如果产品在用户购物篮中被删除会怎样?
- 已进行的购买中的引用需要保持完整,以便能够在删除购买的产品后重建帐单。
此外,您可以像这样重命名 PostreSQL 中的表:
ALTER TABLE TableB RENAME TO TableC;
万一你想使用你的“临时表”解决方案,我也使用过,虽然在不那么关键的情况下,无可否认。但请注意,至少在 MySQL InnoDB 中,您必须担心外键,如果重命名,外键仍将指向旧表,例如如果从 TableA 到 TableB 有一个外键,并且您将 TableB 重命名为 TableB_old 并将 TableB_new 重命名为 TableB,那么外键将指向 TableB_old。不过,我不知道 PostgreSQL 是否属于这种情况。
关于php - 导入数据时防止网上商店没有产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6883235/