1

次のステートメントを使用して、テーブル内の列の値を交換しています。

UPDATE SwapTable
SET ValueA=ValueB
   ,ValueB=ValueA

このSQL Fiddleで確認できるように、これは機能し、値はスワップされます。

ただし、(ほとんどすべての) 他の言語でそのようなことを行うと、 と の両方が同じ値になるValueAことValueBになります。

だから私の質問は、これがSQLでなぜ/どのように機能するかです。

4

1 に答える 1

4

実行計画を見ることができます。

  1. テーブルからすべての行を選択し、行セットとして作成します。
  2. トランザクションを開く
  3. 参照されるテーブル(SwapTable)を、対応する行アドレスで、行セットから読み取られた古い値からフィールド参照に更新します。
  4. コミット-更新を完了しました。
于 2012-12-18T07:09:08.050 に答える