Sql server 当我们刷新整个表而不是某些记录时,如何使用触发器捕获SQL Server表中的数据更改?

Sql server 当我们刷新整个表而不是某些记录时,如何使用触发器捕获SQL Server表中的数据更改?,sql-server,triggers,dml,change-tracking,Sql Server,Triggers,Dml,Change Tracking,我在一个暂存数据库中有一个Inventory表,它每天都会刷新。我创建了一个作业,首先删除表,然后将整个表从事务数据库插入到临时数据库。我想捕获一天内更改的所有记录 问题:有没有一种方法可以使用DML触发器捕获自上次刷新以来更改的值?(我知道DML触发器对记录执行INSERT,UPDATE,DELETE操作,但这里我要删除整个表,并从Oracle OLTP DB将数据重新插入其中)。我的SQL Server Business Intelligence edition不支持更改数据捕获(CDC)功

我在一个暂存数据库中有一个
Inventory
表,它每天都会刷新。我创建了一个作业,首先删除表,然后将整个表从事务数据库插入到临时数据库。我想捕获一天内更改的所有记录


问题:有没有一种方法可以使用DML触发器捕获自上次刷新以来更改的值?(我知道DML触发器对记录执行
INSERT
UPDATE
DELETE
操作,但这里我要删除整个表,并从Oracle OLTP DB将数据重新插入其中)。我的SQL Server Business Intelligence edition不支持更改数据捕获(CDC)功能

因为您实际上不是在更新现有行,而是简单地再次插入所有行-您可以有一个
INSERT
触发器,但这只是再次插入的所有行的列表。如果要与上一个状态进行比较,必须有人保留上一个状态(而不是删除整个表),进行插入,然后进行比较。@marc_感谢您的回复。但是,如何保留表的先前状态,然后将其与今天更新的表进行比较?我可以在生产表上运行触发器,该触发器每秒刷新一次,但这可能会导致性能问题。一种策略可能是重命名现有表(而不是截断它),以原始名称创建表的新副本,然后将数据加载到新创建的(因此为空)表中。现在你有了旧的;用昨天的数据和新创建的表中的今天的数据重命名了表-现在您可以很容易地比较。。。