Oracle SQL更新语句以什么顺序更改列值?

4 L*_*ver 2 sql oracle

我得到了这句话

UPDATE TABLE_A SET COL_A = COL_B, COL_B = 0
Run Code Online (Sandbox Code Playgroud)

我对它执行的顺序感到好奇,因为我希望COL_A应该包含我的COL_B的值,而COL_B应该是0,但是某种程度上当前两个字段都是0。

Jef*_*emp 7

SQL更新本质上是原子的-没有更新单个列的“顺序”或“顺序”的概念。您可以按照自己喜欢的顺序放置它们,没关系。

从概念上讲,您可以考虑采用行的“之前”状态并将其更改为行的“之后”状态。因此,将使用更新之前的COL_B中的任何值来更新COL_A。

这使得交换两个值变得容易:

UPDATE test2 SET A=B, B=A;
Run Code Online (Sandbox Code Playgroud)