在MySQL中更新表的多个唯一行的最佳方法是什么?

时间:2011-06-03 18:29:10

标签: mysql rows

我在MySQL表中有一个项目列表。 用户可以通过在HTML列表中上下拖动来订购这些项目。 然后我需要将每个项目位置存储在列表中。

是否可以在一次MySQL调用中执行此操作,还是必须单独调用每个产品来设置自己的订单ID?

单个电话会看起来像这样:

UPDATE table_name SET `order` = order_number AND `product_id` = 'X';

2 个答案:

答案 0 :(得分:0)

好吧,您可以删除整个表格,然后为所有产品插入新的订单号。这只是两个陈述。只要此表仅包含“订单”信息而没有其他关键数据,这将起作用。

答案 1 :(得分:0)

您可以删除有问题的所有项目,如果其他数据不受其影响(CASCADE等),请将其重新插入。那将是两个问题;删除“WHERE product_id IN('X','Y',...)”,并插入每个项目的更新值。

一个干净的解决方案是在事务中执行UPDATE,但由于MySQL不支持延迟约束检查,如果'order'属性为UNIQUE,则会出现问题。