2
我得到这个说法Oracle SQL更新语句以哪种顺序更改列值?
UPDATE TABLE_A SET COL_A = COL_B, COL_B = 0
我好奇的是执行,因为我希望为col_a应该包含我COL_B的价值和COL_B应为0,但不知目前这两个领域是序列0
我得到这个说法Oracle SQL更新语句以哪种顺序更改列值?
UPDATE TABLE_A SET COL_A = COL_B, COL_B = 0
我好奇的是执行,因为我希望为col_a应该包含我COL_B的价值和COL_B应为0,但不知目前这两个领域是序列0
CREATE TABLE test2(A NUMBER, B NUMBER);
INSERT INTO TEST2 VALUES(1,2);
UPDATE TEST2 SET A=B,B=0;
执行后A = 2,B = 0
SQL更新本质上是原子 - 没有关于更新各个列的“序列”或“顺序”的概念。你可以以任何你喜欢的顺序放置它们,没关系。
从概念上讲,您可以考虑将该行的“之前”状态并将其更改为该行的“之后”状态。因此COL_A将更新之前更新COL_B中的任何值。
这使得很容易替换掉两个值:
UPDATE test2 SET A=B, B=A;
它将工作正常! – ajmalmhd04