[英]What's the best way to update multiple unique rows of a table in MySQL?
我在 MySQL 表中有一个项目列表。 用户可以通过在 HTML 列表中上下拖动来订购这些物品。 然后我需要将每个项目 position 存储在列表中。
是否可以在一个 MySQL 调用中执行此操作,还是必须单独调用每个产品来设置自己的订单 ID?
单个调用看起来像这样:
UPDATE table_name SET `order` = order_number AND `product_id` = 'X';
好吧,您可以删除整个表格,然后为所有产品插入新的订单号。 这只是两种说法。 只要此表仅包含“订单”信息而没有其他关键数据,这将起作用。
您可以删除所有有问题的项目,如果没有其他数据会受到影响(CASCADE 和类似),则将它们重新插入。 那将是两个查询; 使用“WHERE product_id IN ('X', 'Y', ...)”删除,并使用每个项目的更新值插入。
一个干净的解决方案是在事务中执行 UPDATE,但由于 MySQL 不支持延迟约束检查,如果“订单”属性为 UNIQUE,则会出现问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.