如何跟踪更改对跨越多个表的记录
-
28-09-2020 - |
题
我有挑战来设计一个使用RDBMS,Oracle的新数据库精确。在此数据库中,将有一个特定的记录/文档可能跨越多个表。
尽可能少,我想跟踪对此记录所做的更改,并提供一种简单的方法来创建该记录的改变副本。
我不想要一个历史记录表,它将总结文本中的更改,因为我希望能够完全按照它看起来的方式获取生成的document x
。但我不希望为每个历史记录输入完整副本。
是最佳实践或模式如何实现这一目标?
我可能有一个想法如何使用模仿生成的策略来解决这个问题,但我先想在我走那条路之前先想到一些意见。
解决方案
在Oracle 12c中,特别是有一个名为“时间闪回查询”的新功能,该功能恰好用于此目的。(类似的特征在其他数据库中提供:DB2,SQL Server,Vertica为少数名。)
要启用时间查询:
- 确保代表文档的每个表都有一对日期,指示特定记录有效(活动)和 时的开始和结束日期(时间)
- 通过未更新它们,而是插入新版本的记录,仅更新历史记录的结束日期,保持历史记录。
然后,您将能够向您的表发出查询,这些表看起来像生成的icetagcode,这将返回在指定日期处活动的记录。
您可以读取详细说明。
不隶属于 dba.stackexchange