Oracle

如何跟踪跨多個表的記錄的更改

  • July 10, 2015

準確地說,我面臨著使用 RDBMS(Oracle)設計新數據庫的挑戰。在這個數據庫中,將有一個特定的記錄/文件,它可能跨越多個表。

通過盡可能少的重複,我想跟踪對此記錄所做的更改,並提供一種簡單的方法來創建該記錄的更改副本。

我不想要一個總結文本變化的歷史表,因為我希望能夠準確地獲取document x它看起來的樣子time t。但我也不希望每個歷史條目都有完整的副本。

是否有最佳實踐或模式來實現這一目標?

我可能知道如何使用策略模仿來解決這個問題git,但在我走這條路之前,我想先得到一些意見。

特別是在 Oracle 12c 中,有一個稱為“時間閃回查詢”的新特性正是用於此目的。(其他數據庫中也有類似的特性:DB2、SQL Server、Vertica 等等。)

要啟用時間查詢,您:

  1. 確保代表您的文件的每個表格都有一對日期,指示特定記錄有效(活動)時的開始日期和結束日期(時間),並且
  2. 保留歷史記錄,不要更新它們,而是插入新版本的記錄,只更新歷史記錄的結束日期。

然後,您將能夠對看起來很像的表發出查詢SELECT whatever FROM mytable AS OF some_date,這將返回在指定日期處於活動狀態的記錄。

您可以在此處閱讀詳細說明

引用自:https://dba.stackexchange.com/questions/106587