Проверьте корректность запроса?

Leon.

SQL Server 2000, SP3Следующим запросом "обновляю" значение поля sysTransact_Date на него же (т.е. было там '20060101', им же и обновляю, так и задумано)
UPDATE dbo.docIncome_Supplier
SET sysTransact_Date = T.sysTransact_Date
FROM dbo.docIncome_Supplier AS T
WHERE
	NOT T.sysTransact_Date IS NULL
кол-во "rows affected", как и ожидалось, даже на фрагменте таблицы проверил, что новое значение sysTransact_Date то же, что и прежде.Вопрос: подзапрос, "< table_source>" для UPDATE не коррелирован с обновляемой строкой в таблице (???). Есть ли гарантия правильной работы такого запроса на обновление? Не могут ли новые значения "перемешаться"?
3 ответа

Leon.

Нет, не могут, иначе появляется вероятность словить проблему Halloween'a, (когда до бесконечности обновлять одну и ту же строку будем, потому как она будет уезжать все ниже и ниже в индексе. примерно так :) ). Я вопрос правильно понял?


Leon.

UPDATE T
SET T.sysTransact_Date = T.sysTransact_Date
FROM dbo.docIncome_Supplier AS T
WHERE
	NOT T.sysTransact_Date IS NULL
И читабельнее, и ничего не перемешается.


Leon.

Спасибо за отклики. Мне важно было получить эту поддержку.