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文檔沒有明確指出分配按它們在查詢中出現的順序執行。
我會承擔什麼,這可能是將來會發生變化的東西,我會討厭它會花費幾秒鐘來編寫代碼,這些代碼會分配兩個值並返回並在軟件更新完成時停止工作。 –