私の質問は、1つの更新ステートメントでの更新の順序と関係がある。私は、SELECT
ステートメントを使用して変数を設定すると、変数が順番に設定されることを確認しました。例えば:この時点@Test1
で別の更新された列に基づく列の更新
SELECT
@Test1 = 2,
@Test2 = @Test1 + 1
は2
と@Test2
になり、設定された操作が順に行われているため3
になります。しかし、UPDATE
はどうなりますか?
UPDATE TestTable SET
Test1 = 2,
Test2 = Test1 + 1
はTest2
その計算にTest1
の初期値を使用しますか、それは我々だけで設定された値を使用しますか? MERGE
の内部にUPDATE
のステートメントがあれば、それは何か違いはありますか?割り当ての右側の
MERGE INTO TestTable AS T
USING (
SELECT
Test1,
Test2
FROM SomeOtherTable
) AS S
ON S.Test1 = T.Test1
WHEN MATCHED THEN
UPDATE SET
T.Test1 = 2,
T.Test2 = T.Test1 + 1
;
これは、すべてのSQL実装で同じように指定されているかどうかはわかりません。派生列の早期再利用を可能にするTeradataの関連する問題を参照してください。 http://stackoverflow.com/questions/2458700/early - または - re-ordered-re-use-derived-of-a-query-is-this-valid-ansi –