通过检查两个表之间的重复记录来跟踪SQL表中的更改

时间:2018-06-14 09:41:48

标签: sql-server triggers change-tracking

我每天从2005 Access DBin导入到SQL Server DB。我不得不简化数据类型,删除SQL端的关系和键以使其工作。转储工作正常,每天我得到最新的数据库,但由于Access中省略了时间戳,我必须删除所有记录并每次重新插入完整的数据库。

我正在尝试找到跟踪Access记录中的更改并将其存储在“历史记录”表中的方法。在其他数据库中,我维护一个带有后缀'_history'的表的重复版本,其中包含额外的'datetime'和'action'列。更新或删除记录时,触发器会在此Journal-table中插入此特定记录以及附属日期时间和操作。

但是,在导入Access数据时,所有记录都会被删除并重新插入,因此此触发器不起作用。我想做但却无法将代码放在一起的是第2步和第3步;

  1. 我的Access SQL副本已清空,并且插入了新版本的Access DB。

  2. 此时,触发器运行以检查表的“_history”版本是否存在相同的匹配,并仅插入新导入中不匹配的记录,并将datetime和action添加到记录中。这些将是新的或更改的记录。

  3. 触发器运行以编译“_history”表中每个不同ID的“最新”记录(最大日期)列表;新导入中缺少的任何记录(以前未标记为已删除)将与新的日期时间和操作重复。这些将被删除记录。

0 个答案:

没有答案