这似乎是一个相当具体的问题,但我想知道是否有任何技术/模式可以帮助我在当前项目中。我有一个非常复杂的数据库,由多个系统更新。我现在需要对分布在多个表中的各种数据位进行更改跟踪,以便将其发送到第三方系统。
我考虑了很多选项,但遗憾的是,除了使用数据库触发器之外,我似乎无法得出任何其他结论。我想在表(或队列)中存储标志以识别已更改的行,然后构建包含要发送到Web服务的已更改数据的xml diff。这感觉有点脏,所以我想知道是否有人能想到更好的选择。
答案 0 :(得分:0)
根据您使用的数据库平台,您可能会查看Change Data Capture。既然你提到.NET,这里有一些关于它的信息:http://technet.microsoft.com/en-us/library/bb522489(v=sql.105).aspx
其他数据库系统可能提供类似的东西。
另一个选项是表上的插入/更新/删除触发器,但是应该小心处理触发器,因为如果操作不正确会导致一些重大的性能问题。
而另一种选择仍然是你所描述的 - 某种监视变化的旗帜。一个简单的CREATED和MODIFIED时间戳字段可以在这里走很长的路,而不仅仅是一个指示行可能需要注意的位指示器,您将知道更新何时发生,并且您的导出过程可以相应地编程(例如,选择*来自修改后的> getdate() - 1)的表格。