很长一段时间以来,我们一直希望创建一个不会丢失历史记录的案例管理系统。当进行更改时,我们希望记录该更改,但能够返回到任何时间点并查看记录的外观。我想向Stack Overflow社区提出这个问题,看看有什么方法可以做到这一点,是否已经有技术来实现这一目标?
答案 0 :(得分:8)
是的,这种技术肯定存在 - 实现它并且正确地执行它是一种努力。
您正在寻找的是时态数据库 - 请参阅一些资源:
答案 1 :(得分:3)
我不确定像marc_s这样的时态数据库是如何工作的,但如果您使用的是SQL Server 2008或更高版本,则可以利用其内置的变更数据捕获(CDC)功能:
启用CDC使用复制事务日志来存储表的插入,更新和删除,并创建表值函数,这些函数允许您检索给定日期/时间的行,或仅检索更改。
但是,您不能单独依赖CDC,因为您的事务日志将变得无法管理大而缓慢。所以你要做的是:
然后你可以在你的查询中使用历史表,像往常一样加入它,但是有一个额外的谓词来“记录”任何你想要的日期。