Sql-Server

保留每個表中每個值的完整歷史記錄

  • September 12, 2021

您將如何保留數據庫中所有表的每個值的完整歷史記錄,可以使用特定日期查詢(對於所有表的每一列)?我的意思是:只需要指定一個值“有效”或“有效”的日期。

以一種愚蠢的方式,我會在每個表中添加一個“有效期開始日期”列。而不是複制每個值,我只會複製更改的值,並將所有其他列設置為 NULL。然而,這個解決方案真的很糟糕,因為它使查詢變得複雜,即使它佔用的空間更少。

是否有一種特定的技術(我在微軟的世界)可以做到這一點,或者有一種特定的方式來為數據庫建模來做到這一點(除了為每個表的每一列創建一個表)?

我想提一下,我不是 DBA,而是開發人員。氪!

SQL Server 有一項在 SQL Server 2016 中引入的功能,稱為Temporal Tables。使用系統版本化的時態表本質上是一種開箱即用的替代方法,可以替代使用觸發器或應用程序邏輯來維護對錶的編輯歷史記錄。

臨時表確實有許多限制和限制,這可能需要其他選項(例如手工製作的觸發器和歷史表),具體取決於您的案例。您需要檢查您的全套要求,並與限制集進行比較。

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