【发布时间】:2017-07-03 15:30:37
【问题描述】:
假设我们有一个表mytable,列有id、a、b,并且有一行值(123, 'foo', 'bar')。
我执行这个查询:
UPDATE mytable SET b=a, a='boom' WHERE id=123
我希望这两个分配按给定的顺序执行,因此结果行是(123, 'boom', 'foo'),但是这可以保证吗?
或者执行顺序是否未定义,因此理论上优化器可能出于某种原因决定以相反的顺序执行它们,最终会得到(123, 'boom', 'boom')?
MySQL 文档没有明确说明分配是按照它们在查询中出现的顺序执行的。
【问题讨论】:
-
我什么都不会假设,这可能会在未来发生变化,我讨厌它需要几秒钟来编写代码,分配两个值并在软件更新时返回并停止工作完成了。
标签: mysql