我收到了这个声明
UPDATE TABLE_A SET COL_A = COL_B, COL_B = 0
我很好奇它执行的序列,因为我希望COL_A应该包含我的COL_B的值,而COL_B应该是0但是目前两个字段都是0。
答案 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