3

我得到了这个声明

UPDATE TABLE_A SET COL_A = COL_B, COL_B = 0

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

4

2 回答 2

8

SQL 更新本质上是原子的——没有更新各个列的“顺序”或“顺序”的概念。你可以把它们按你喜欢的顺序排列,没关系。

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

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

UPDATE test2 SET A=B, B=A;
于 2013-09-27T05:25:48.660 回答
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 执行后

于 2013-09-27T03:15:33.697 回答