使用触发器保存关系表的历史记录



假设我有6个表

    工作站
  1. Workstation_CL
  2. Location_CL
  3. <
  4. 功能/gh>
  5. Features_CL

我目前使用触发器在每个表的"_CL"版本中插入一个额外的字段,该字段表示更改是"UPDATE","INSERT"还是"DELETE"。

工作站表跟踪"modified_by"用户。如果用户更新了"工作站"对象的位置,则"位置"表和"工作站"表同时更新。对工作站表的唯一修改是"modified_by"字段,以便我知道是谁进行了更改。

我遇到的问题是当我想到拉审计报告。我如何将"Location_CL"中的记录链接到"Workstation_CL"中的记录,两者都由单独的触发器填充。

不知怎么的,我的问题部分被删除了。很抱歉。

问题:我如何在"Workstation_CL"one_answers"Location_CL"中提取某种类型的唯一标识符,以便我可以识别每个修订?例如,当我从"Location_CL"拉所有记录,我看到所有的位置变化,从"Workstation_CL"拉用户名,使位置发生变化?

为每个修订指定一个由触发器生成的GUID。在两个表中填充一个字段(RevisionId),值为。

每个审计表需要2到3列。

1)时间戳,以便您知道何时进行了更改。
2)用户更改,所以你可以跟踪谁做了更改-我假设位置可以独立于工作站更改。3)您可能还需要事务的标识符。我想你可以从数据库里查到他的身份,不过我不确定。

如果没有时间戳和用户,我不认为你可以有一个有效的报告,但是,我不认为你只把用户放在一个表上。

在触发事件期间,我能够执行以下操作:

SELECT @trans_id=transaction_id FROM sys.dm_tran_current_transaction

给出当前操作的事务id。

这样,我就可以将它插入到相应的_CL表中,然后执行与自动生成id匹配的选择。

相关内容

  • 没有找到相关文章

最新更新