You need a MERGE, because what happens when you delete the last row from Sales?ALTER TRIGGER dbo.trgSales
ON dbo.Sales
AFTER INSERT,
UPDATE,
DELETE
AS
SET NOCOUNT ON;
MERGE dbo.Stock AS tgt
USING (
SELECT ID,
SUM(Qty) AS Qty
FROM dbo.Sales
GROUP BY ID
) AS src ON src.ID = tgt.ID
WHEN MATCHED AND tgt.Qty <> src.Qty
THEN UPDATE
SET tgt.Qty = src.Qty
WHEN NOT MATCHED BY TARGET
THEN INSERT (
ID,
Qty
)
VALUES (
src.ID,
src.Qty
)
WHEN NOT MATCHED BY SOURCE
THEN DELETE;
Microsoft SQL Server MVP, MCT, MCSE, MCSA, MCP, MCITP, MCTS, MCDBA