使用同一记录中的值进行SQL更新

Cra*_*ste 6 sql sql-server

在以下语句中,将f1始终获得f2以前的值?或者f2有时会先更新并f1最终结束NULL?我的印象是声明中的新值不可用,f2在处理记录时具有旧值,但我找不到一个说明这一点的权威位置.

UPDATE x
SET
    x.f1 = x.f2,
    x.f2 = NULL
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 6

从概念上讲,操作“一次性”发生因此它将使用“之前”值

的确

UPDATE x
SET
 x.f1 = x.f2,
 x.f2 = x.f1
Run Code Online (Sandbox Code Playgroud)

交换两列值也可以正常工作。