【发布时间】:2018-09-07 14:24:31
【问题描述】:
我正在开发具有更改跟踪功能的 SQL Server 2016 SP1,我有一个问题要问您。
我有一个启用了更改跟踪的数据库。该数据库包含一个表Table,它激活了“更改跟踪”,但没有“跟踪更新的列”选项。
例如,在Table 上,我只有一个名为Id 的列,类型为“uniqueidentifier”,这是我的PK。
在开始时,我的更改跟踪当前版本是 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;
现在是我的问题,为什么我在 SYS_CHANGE_OPERATION 中得到“U”?
为什么不是“我”导致 1
感谢您的帮助!
【问题讨论】:
标签: sql-server change-tracking