我已经创建了类似于以下代码的审核表,该代码记录了对源表所做的更改。我的问题是,审计表可以包含新插入的记录,还是应该仅包含更新的记录/历史记录,因为新记录在源表中?
我正在寻找每种方法和最佳实践的利弊。
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
答案 0 :(得分:1)
这完全取决于您的情况,
但是我想让Audit表具有所有记录,新插入的记录和更新的记录,以便我可以查看,检查历史记录,进行时间线计算……仅使用Audit表作为单独的实体而无需返回到原始表格。
另外,如果我想回滚到某个记录(它可能是第一个插入的记录),可能会有所帮助