我有一个遗留数据库,其中一些表按以下方式进行版本控制:每个字段单独 - 并且只有那些发生变化的字段;
Table1
ObjID userID Data1 Data2 Data3
----- ------ ----- ---- ----
11 1 A null 123
222 1 H 111 999
33 2 C 222 333
Table1_ver
ObjID userID FieldName OldValue VersionNumber
----- ------ ----- ---- ----
222 1 Data1 F 5
222 1 Data1 A 8
222 1 Data2 888 10
33 8 Data1 G 10
当前版本存储在其他表中 - 假设现在是 11;当更改发生时,旧数据值与“旧”版本号(旧值所属的那个)一起记录,然后版本号增加
这些表有很多字段(> 20)和很多记录,所以我猜最初的想法是使用更少的存储来进行版本控制。现在我需要添加功能以在给定的时间点(按版本)重建数据。我怎样才能以一种优雅而有效的方式做到这一点——最好不使用动态 SQL,而是使用一些基于集合的方法。是否可以在 SQL 中以良好的性能完成?谢谢!