我得到了这个声明
UPDATE TABLE_A SET COL_A = COL_B, COL_B = 0
我对它执行的顺序很好奇,因为我希望 COL_A 应该包含我的 COL_B 的值,而 COL_B 应该是 0 但不知何故,目前这两个字段都是 0。
SQL 更新本质上是原子的——没有更新各个列的“顺序”或“顺序”的概念。你可以把它们按你喜欢的顺序排列,没关系。
从概念上讲,您可以认为它采用行的“之前”状态并将其更改为行的“之后”状态。因此 COL_A 将使用更新前 COL_B 中的任何值进行更新。
这使得交换两个值变得容易:
UPDATE test2 SET A=B, B=A;
CREATE TABLE test2(A NUMBER, B NUMBER);
INSERT INTO TEST2 VALUES(1,2);
UPDATE TEST2 SET A=B,B=0;
A=2,B=0 执行后