SQL列交换行为

时间:2012-12-18 06:59:30

标签: sql sql-server-2008 swap

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

UPDATE SwapTable
SET ValueA=ValueB
   ,ValueB=ValueA

这样做并且值会被交换,这可以通过SQL Fiddle验证。

但是,如果我们在(大多数情况下)其他语言中执行此类操作,我们最终会使ValueAValueB具有相同的值。

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

1 个答案:

答案 0 :(得分:4)

您可以看到执行计划。

  1. 从表中选择所有行并将其设置为行集。
  2. 开启交易
  3. 使用相应的行地址更新引用的表(SwapTable),从从行集读取的旧值更新为字段引用
  4. 提交 - 完成更新。