Я работаю над SQL Server 2016 SP1 с функцией отслеживания изменений, и у меня есть к вам вопрос.
У меня есть база данных, в которой включено отслеживание изменений. Эта база данных содержит таблицу Table
, в которой активировано «отслеживание изменений», но не включена опция «отслеживание обновленных столбцов».
Например, на Table
у меня есть только один столбец с именем Id
типа "uniqueidentifier", который является моим ПК.
При запуске моя текущая версия отслеживания изменений равна 0.
Я получил это с:
SELECT CHANGE_TRACKING_CURRENT_VERSION();
Я добавил новую строку в Table
:
INSERT INTO dbo.[Table] (Id)
VALUES ('C99F9E2A-1974-47CE-A406-481076F53BBD');
Теперь моя текущая версия отслеживания изменений теперь 1.
С помощью этого запроса я могу увидеть свой элемент в системе отслеживания изменений:
SELECT *
FROM CHANGETABLE (CHANGES dbo.[Table], 0) CT;
Результат:
Теперь я удаляю свою строку следующим образом:
DELETE FROM dbo.[Table]
WHERE Id = 'C99F9E2A-1974-47CE-A406-481076F53BBD';
Текущая версия отслеживания изменений теперь 2.
Я вставляю его снова с тем же запросом, что и предыдущий.
Текущая версия отслеживания изменений теперь 3.
С этим запросом я получил такой результат:
SELECT *
FROM CHANGETABLE (CHANGES dbo.[Table], 1) CT;
Теперь мой вопрос, почему я получил «U» в SYS_CHANGE_OPERATION?
Почему бы не «я» вызвать 1 ‹ SYS_CHANGE_CREATION_VERSION, что равно 3?
Спасибо за вашу помощь !