Используя 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 затронутых строк)
Что мне здесь не хватает?