Что может привести к тому, что "затронутые строки" будут неправильными?

Использование Microsoft SQL Server Management Studio 2008. Я выполнил простую транзакцию:

BEGIN TRAN

SELECT ko.ID, os.ID AS ID2
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);

UPDATE table_b SET the_date=ko.the_date
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);

SELECT ko.ID, os.ID AS ID2
FROM table_a AS ko
JOIN table_b AS os ON os.ID=ko.ID
WHERE (ko.the_date IS NOT NULL AND os.the_date IS NULL);


ROLLBACK

Итак, SELECT и UPDATE должны быть одинаковыми. И результат должен возвращать 0 строк. Но UPDATE влияет на одну строку меньше, чем SELECT получает из БД:

(затронуты 61 строка (и))

(затронуты 60 строк)

(затронуты 0 строк)

Что такое Мне здесь не хватает?

8
задан Indrek 5 October 2010 в 14:01
поделиться