AFTER INSERT trigger that inserts a row in the TransactionHistory table and updates the PurchaseOrderHeader.SubTotal column.
Properties
Creation Date
27/10/2017 14:33
Encrypted
Ansi Nulls
Trigger Type
Insert
Delete
Update
After
Instead Of
Trigger Definition
CREATETRIGGER[Purchasing].[iPurchaseOrderDetail]ON[Purchasing].[PurchaseOrderDetail]
AFTER INSERTASBEGINDECLARE@Countint;
SET@Count=@@ROWCOUNT;
IF@Count=0RETURN;
SET NOCOUNT ON;
BEGIN TRY
INSERTINTO[Production].[TransactionHistory]
([ProductID]
,[ReferenceOrderID]
,[ReferenceOrderLineID]
,[TransactionType]
,[TransactionDate]
,[Quantity]
,[ActualCost])
SELECT
inserted.[ProductID]
,inserted.[PurchaseOrderID]
,inserted.[PurchaseOrderDetailID]
,'P'
,GETDATE()
,inserted.[OrderQty]
,inserted.[UnitPrice]FROM inserted
INNERJOIN[Purchasing].[PurchaseOrderHeader]ON inserted.[PurchaseOrderID]=[Purchasing].[PurchaseOrderHeader].[PurchaseOrderID];
-- Update SubTotal in PurchaseOrderHeader record. Note that this causes the
-- PurchaseOrderHeader trigger to fire which will update the RevisionNumber.
UPDATE[Purchasing].[PurchaseOrderHeader]SET[Purchasing].[PurchaseOrderHeader].[SubTotal]=
(SELECTSUM([Purchasing].[PurchaseOrderDetail].[LineTotal])
FROM[Purchasing].[PurchaseOrderDetail]WHERE[Purchasing].[PurchaseOrderHeader].[PurchaseOrderID]=[Purchasing].[PurchaseOrderDetail].[PurchaseOrderID])
WHERE[Purchasing].[PurchaseOrderHeader].[PurchaseOrderID]IN (SELECT inserted.[PurchaseOrderID]FROM inserted);
END TRY
BEGIN CATCH
EXECUTE[dbo].[uspPrintError];
-- Rollback any active or uncommittable transactions before
-- inserting information in the ErrorLog
IF@@TRANCOUNT>0BEGINROLLBACKTRANSACTION;
ENDEXECUTE[dbo].[uspLogError];
END CATCH;
END;