0
假设我们有一个表mytable
与列id
,a
,b
并且有一行值为(123, 'foo', 'bar')
。是否确保UPDATE按给定顺序执行SET赋值?
我执行此查询:
UPDATE mytable SET b=a, a='boom' WHERE id=123
我期望在给定的顺序执行两个任务,因此所产生的排须(123, 'boom', 'foo')
,但是这个保障?
或者是未定义的执行顺序,因此理论上可能无论是什么原因,优化程序决定以相反的顺序执行它们,最终会以(123, 'boom', 'boom')
?
MySQL文档没有明确指出分配按它们在查询中出现的顺序执行。
我会承担什么,这可能是将来会发生变化的东西,我会讨厌它会花费几秒钟来编写代码,这些代码会分配两个值并返回并在软件更新完成时停止工作。 –