1

我正在使用以下语句交换表中的列值:

UPDATE SwapTable
SET ValueA=ValueB
   ,ValueB=ValueA

这可行,并且值确实被交换了,这可以通过此SQL Fiddle进行验证。

但是,如果我们用(大多数情况下)其他语言做这样的事情,我们最终会得到两者ValueAValueB具有相同的值。

所以我的问题是为什么/如何在 SQL 中工作。

4

1 回答 1

4

你可以看到执行计划。

  1. 从表中选择所有行并将其作为行集。
  2. 打开交易
  3. 从从行集读取的旧值字段引用,使用相应的行地址更新引用的表 (SwapTable) 。
  4. 提交——完成更新。
于 2012-12-18T07:09:08.050 回答