我有一个 SQL Server 2008 R2 数据库,我需要在其中跟踪对数据所做的某些更改。到目前为止,我的所有研究都提出了对所做的每一个更改进行相当复杂的跟踪的方法,但我的案例更具体一些,而且我认为更简单,因为我只需要跟踪更改直到它被批准(由管理员) .
到目前为止,我能想到的唯一方法是,对于每个受影响的表,创建一个pending_changes
跟踪更改类型(即INSERT
,UPDATE
或DELETE
)、主键、列名以及在适用的情况下的值的表或要更改的值。
然后,当更改被批准时,可以从中生成一条 SQL 语句,将更改写入主表。不过,这感觉是一种非常笨拙的方法,并且很难查询(例如,生成旧值与新值的列表)。
这是一个非常小的数据库(< 1000000 行),只有大约 5 个用户,因此性能不是问题。
编辑:
跟踪更改的目的是在将它们写入数据库之前需要对其进行批准。这些数据大多是具有法律含义的科学数据,因此用户(在本例中为客户)提出的更改需要经过专家检查才能获得批准。一旦它们被批准,我们就不再需要知道旧值了。所有更改,包括DELETE
声明,都需要此批准。 INSERT
并且UPDATE
可以通过创建一个包含更改数据的类似表来处理,但我不确定如何处理删除。我还想避免过多的额外表,因为我需要跟踪几个基表,而且我担心增加的复杂性。