i show a easy way to do data auditing with trigger on an Order Table, which will allow user to update and Insert records in the Order table.
here i implement a logic to determine the user action like Update or Insert, if a record is being delete and insert then we know the record had been update, otherwise it is a straight insert
IF EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)
begin
set @Operation='Update'
end
else
begin
set @Operation='Insert'
end
ALTER trigger [dbo].[tblTriggerInsertUpdateAuditRecord] on [dbo].[Order]
after update, insert
as
begin
declare @Operation nvarchar(10)
IF EXISTS(SELECT * FROM INSERTED) AND EXISTS(SELECT * FROM DELETED)
begin
set @Operation='Update'
end
else
begin
set @Operation='Insert'
end
insert into OrderAudit
( OrderID
,OrderNumber
,OrderDate
,ShipperID
,ShippingCompanyID
,WorkStationID
,PaymentTermID
,CreateDate
--,UpdateDate
,OrderStatus
,IsTailGateRequire
,AdditionalOrders
,TotalPieces
,TotalWeight
,Supervisor
,Operation )
select i.OrderID
,i.OrderNumber
,i.OrderDate
,i.ShipperID
,i.ShippingCompanyID
,i.WorkStationID
,i.PaymentTermID
,GETDATE()
,i.OrderStatus
,i.IsTailGateRequire
,i.AdditionalOrders
,i.TotalPieces
,i.TotalWeight
,i.Supervisor
,@Operation
from Order t
inner join inserted i on t.OrderID=i.OrderID
end
In term of delete, we just need to copy a record from delete table in Temp database
ALTER trigger [dbo].[triggerDeleteAuditOrderDetails] on [dbo].[OrderDetails]
after delete
as
begin
insert into OrderDetailsAudit
(OrderDetailsID
,SCIOrderID
,Quantities
,ShipItemID
,IsDangerousGoods
,DangerousGoodsHazardClassID
,Weight
,Operation
,CreateDate)
select D.OrderDetailsID
,D.SCIOrderID
,D.Quantities
,D.ShipItemID
,D.IsDangerousGoods
,D.DangerousGoodsHazardClassID
,D.Weight
,'Delete'
,GetDate()
From DELETED D
end
No comments:
Post a Comment