【发布时间】:2010-04-06 00:30:09
【问题描述】:
我需要根据用户请求更新很多行。这是一个有产品的网站。
我可以...
- 删除该产品的所有旧行,然后遍历字符串以构建新的
INSERT查询。但是,如果INSERT失败,这将丢失所有数据。 - 在每个循环中执行
UPDATE。此循环目前迭代了 8 个以上的项目,但未来可能会达到 15 个。这么多UPDATEs 听起来不是一个好主意。 - 更改数据库架构,并将
auto_incrementId 添加到行中。然后先执行SELECT,获取变量中的所有旧行 id,执行INSERT,然后执行DELETE WHERE IN SET。
这里通常的做法是什么?
谢谢
【问题讨论】:
-
这可能与PHP无关。这更像是一个设计问题。我认为你需要退后一步,重新审视你正在尝试做的事情。去给自己泡杯茶吧……:)
-
我刚刚添加了 PHP 标记,因为我提到了循环等。可能对背景有帮助。另外,我不是喝茶/咖啡的人。也许我应该是!
-
如果你想合并批量更新,你可以在临时表中插入一个键:值映射,然后更新你的目标表加入临时表。但是对于 8-15 的更新,这可能是浪费精力。