我有一个SQL Server 2008 R2数据库,其中需要跟踪对数据所做的某些更改。到目前为止,我的所有研究都提出了对每一项变更进行相当复杂追踪的方法,但我的案例更具体一些,我认为更简单一些,因为我只需要追踪变更,直到它获得批准(由管理员) 。构建数据库以跟踪对数据的某些更改
到目前为止,我能想到的唯一办法做到这一点,对于每个受影响的表,创建一个表追踪(即INSERT
,UPDATE
或DELETE
)类型的变化,主键列名,以及在适用的情况下,要改变的数值。
然后,当更改被批准时,可以从中生成一条SQL语句将更改写入主表。这感觉就像是一种非常笨拙的做法,而且很难查询它(例如产生一个旧的vs新的值的列表)。
这是一个非常小的数据库(< 1000000行),只有大约5个用户,所以性能不是问题。
编辑: 跟踪变化的目的是,他们需要被批准之后才能写入数据库。数据主要是科学的,具有法律影响,因此用户(本例中为客户)提出的更改需要专家检查,然后才能获得批准。一旦他们获得批准,我们不需要再知道旧的价值观。所有更改,包括DELETE
声明都需要此批准。 INSERT
和UPDATE
可以通过创建一个包含更改数据的类似表来处理,但我不知道如何处理删除。我也想避免额外的表格太多,因为我需要跟踪几个基表,而且我担心增加的复杂性。
没有想过触发器 - 我以前没有用过它们,所以我不太熟悉它们的功能,但我会阅读!我曾想过在应用程序方面做这件事,但认为在数据库中实现它可能更强大。 – aquavitae 2013-02-16 13:53:01