我有一个列出所有订单的数据库表。每个周末都会运行一个 cron 并为每个客户生成发票。代码循环遍历每个客户,获取他们最近的订单,创建 PDF,然后更新订单表以针对他们的每个订单记录发票 ID。
最后的更新查询是:
update bookings set invoiced='12345' where username='test-username' and invoiced='';
因此,对于 test-username 之前未开票的所有订单,将开票设置为 12345。
我遇到了一个问题,订单被添加到 PDF 中,但没有更新以反映它们已开票的事实。
我已经开始手动运行更新查询并遇到一个奇怪的情况。
一个客户可能有 60 个订单。
如果我运行一次查询,则更新 1 个订单。我再次运行它并更新了 1 个订单,我重复该过程,每次只更新少量订单 - 1 到 3 之间。它不会像我预期的那样在一个查询中更新 60 个。我需要重复运行查询,直到它最终返回“0 行受影响”,然后我可以确定所有行都已更新。
我的查询中没有包含 LIMIT XX,所以我没有理由不能一次更新所有订单。我重复运行的查询每次都是相同的。
有人有什么明智的建议吗?!