USE [BPOptical] >GO > >/****** Object: Trigger [dbo].[Transfers_Insert_AdjustItemQty] Script Date: 11/07/2013 02:17:31 PM ******/ >SET ANSI_NULLS ON >GO > >SET QUOTED_IDENTIFIER ON >GO > > >-- ============================================= >-- Author: <Author,,Name> >-- Create date: <Create Date,,> >-- Description: <Description,,> >-- ============================================= >CREATE TRIGGER [dbo].[Transfers_Insert_AdjustItemQty] > ON [dbo].[transfers] > AFTER INSERT >AS >BEGIN > -- SET NOCOUNT ON added to prevent extra result sets from > -- interfering with SELECT statements. > SET NOCOUNT ON; > > DECLARE @Quantity int > SET @Quantity = (SELECT trn_qty FROM inserted) > > DECLARE @ItemId char(16) > SET @ItemId = (SELECT trn_itmfk FROM inserted) > > -- Insert statements for trigger here > UPDATE dbo.Items > SET Items.iqtyonhand = Items.iqtyonhand - @Quantity > WHERE iitemid = @ItemId > AND iItemTypId = '43' -- 43 is for Inventory items > > >END > > >GO>
CREATE TRIGGER [dbo].[Transfers_Insert_AdjustItemQty] ON [dbo].[transfers] AFTER INSERT AS BEGIN SET NOCOUNT ON; MERGE dbo.Items as Target USING (select trn_itmfk as ItemId, SUM(trn_Qty) as TotalQty FROM Inserted GROUP BY trn_itmfk) AS Source ON Target.ItemId = Source.ItemId WHEN Matched AND Target.ItemTypId = '43' THEN UPDATE SET iQtyOnHand = iQtyOnHand - COALESCE(Source.TotalQty,0); END GOThis is assuming you're using SQL Server 2008 and up.