我正在使用MySQL InnoDB。MySQL - 在单个查询中更新列的顺序
我想更新一个表并控制每列更新的顺序。所有在一个查询如果可能的话。原因是我有一个游戏队列系统。当你完成queue_1时,我希望为它分配queue_2的值,然后擦除queue_2。
现在我收到了不可预测的结果。有时total_price_2设置为零,则加载到total_price_1。两者都变为零。 (不是我想要的。)
我读到DB决定运行更新的顺序。如果我必须做两个更新,那很好。我的目标是表现。
UPDATE
queue
SET
queue_1 = queue_2,
total_price_1 = total_price_2,
total_wait_1 = total_wait_2,
queue_2 = '',
total_price_2 = 0,
total_wait_2 = 0
WHERE id IN(1,2,3)
您确定'total_price_2'在更新之前不是'0'吗? – MichaelRushton 2012-04-04 08:12:34
@MichaelRushton好想法。在您的评论后,我正在尝试自己的查询,而不是在代码中的自然上下文中查询。 7次尝试,每次都在努力。使用我给它的订单。我会继续嗅探并回传。 – Dor1000 2012-04-04 08:25:15
我在更新之前和之后选择并回显队列数据。我发现我的更新正在按计划进行,但其他情况在后来改变了这些值。氙气在这方面有一个很好的答案。 – Dor1000 2012-04-04 08:44:55