说我有6张桌子。
我目前正在使用触发器插入每个表的“_CL”版本,并附加一个字段,表示更改是“更新”,“插入”还是“删除”。
工作站表跟踪“modified_by”用户。如果用户更新“工作站”对象的位置,则“位置”表以及“工作站”表都会更新。对Workstation表的唯一修改是“modified_by”字段,以便我知道是谁进行了更改。
我遇到的问题是当我考虑提出审计报告时。如何将“Location_CL”中的记录链接到“Workstation_CL”中的记录,这两个记录都由不同的触发器填充。
不知怎的,我的问题部分被删除了。抱歉。问题:如何在“Workstation_CL”和“Location_CL”中提取某种类型的唯一标识符,以便我可以识别每个修订版本?例如,当我从“Location_CL”中提取所有记录并且我看到所有位置更改时,从“Workstation_CL”中提取用户名来更改位置?
答案 0 :(得分:0)
为每个修订提供触发器生成的GUID。使用值填充两个表中的字段(RevisionId)。
答案 1 :(得分:0)
每个审核表上需要2列,也许3列。
1)时间戳,以便您知道更改的时间。
2)用户已更改,因此您可以跟踪进行更改的人员 - 我假设位置可以独立于Workstation进行更改。
3)您可能还需要交易的标识符。我认为你可以从数据库获得一个id,虽然我不确定。
我认为如果没有时间戳和用户,你就无法获得有效的报告,而且我认为你只是将用户放在一张桌子上。
答案 2 :(得分:0)
在触发事件期间,我能够执行以下操作:
SELECT @trans_id=transaction_id FROM sys.dm_tran_current_transaction
给出了当前操作的事务ID。
有了这个,我可以将它插入到相应的_CL表中,然后执行与自动生成ID匹配的选择。