审核表-我们可以将新值存储在审核表中吗?

时间:2019-03-04 12:17:49

标签: c# sql-server

我已经创建了类似于以下代码的审核表,该代码记录了对源表所做的更改。我的问题是,审计表可以包含新插入的记录,还是应该仅包含更新的记录/历史记录,因为新记录在源表中?

我正在寻找每种方法和最佳实践的利弊。

create table tblOrders
(
  OrderID integer Identity(1,1) primary key,
  OrderApprovalDateTime datetime,
  OrderStatus varchar(20)
)

create table tblOrdersAudit
(
  OrderAuditID integer Identity(1,1) primary key,
  OrderID integer,
  OrderApprovalDateTime datetime,
  OrderStatus varchar(20),
  UpdatedBy nvarchar(128),
  UpdatedOn datetime
)
go

create trigger tblTriggerAuditRecord on tblOrders
after update, insert
as
begin
  insert into tblOrdersAudit 
  (OrderID, OrderApprovalDateTime, OrderStatus, UpdatedBy, UpdatedOn )
  select i.OrderID, i.OrderApprovalDateTime, i.OrderStatus, SUSER_SNAME(), getdate() 
  from  tblOrders t 
  inner join inserted i on t.OrderID=i.OrderID 
end
go

1 个答案:

答案 0 :(得分:1)

这完全取决于您的情况, 但是我想让Audit表具有所有记录,新插入的记录和更新的记录,以便我可以查看,检查历史记录,进行时间线计算……仅使用Audit表作为单独的实体而无需返回到原始表格。
另外,如果我想回滚到某个记录(它可能是第一个插入的记录),可能会有所帮助