Oracle SQL更新语句以哪种顺序更改列值?

时间:2013-09-27 01:12:02

标签: sql oracle

我收到了这个声明

UPDATE TABLE_A SET COL_A = COL_B, COL_B = 0

我很好奇它执行的序列,因为我希望COL_A应该包含我的COL_B的值,而COL_B应该是0但是目前两个字段都是0。

2 个答案:

答案 0 :(得分:2)

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

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

这样可以轻松交换两个值:

UPDATE test2 SET A=B, B=A;

答案 1 :(得分:1)

CREATE TABLE test2(A NUMBER, B NUMBER);

INSERT INTO TEST2 VALUES(1,2);

UPDATE TEST2 SET A=B,B=0;

执行

后A = 2,B = 0