USE [CZJXC] GO /****** Object: Trigger [dbo].[tg_StgImpOrderWriteoffVersion] Script Date: 04/24/2012 10:53:18 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: By template generator -- Create date: 2012-4-24 -- Description: 仓库: 入库单-核销信息 -- ============================================= ALTER TRIGGER [dbo].[tg_StgImpOrderWriteoffVersion] ON [dbo].[STG_ImpOrderWriteoff] AFTER INSERT,UPDATE,DELETE AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @opeFlag NVARCHAR(1) SET @opeFlag = '''' IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted) SET @opeFlag = ''I'' IF EXISTS(SELECT 1 FROM inserted A JOIN deleted B ON A.id=B.id) SET @opeFlag = ''U'' IF EXISTS(SELECT 1 FROM deleted) AND NOT EXISTS(SELECT 1 FROM inserted) SET @opeFlag = ''D'' IF (@opeFlag = ''U'') BEGIN -- <<<================ 更新本表的时间戳 ===============>>> UPDATE [dbo].[STG_ImpOrderWriteoff] SET modifyDate = CURRENT_TIMESTAMP FROM Inserted i WHERE [dbo].[STG_ImpOrderWriteoff].id = i.id END ELSE IF (@opeFlag = ''I'') BEGIN -- <<<================ 更新本表的时间戳 ===============>>> UPDATE [dbo].[STG_ImpOrderWriteoff] SET createDate = CURRENT_TIMESTAMP ,modifyDate = CURRENT_TIMESTAMP FROM Inserted i WHERE [dbo].[STG_ImpOrderWriteoff].id = i.id END -- <<<================ begin 业务逻辑处理 ================>>> ---- 反写统计信息(删除/更新情况下) IF(@opeFlag = ''U'' or @opeFlag = ''D'' ) BEGIN UPDATE dbo.STG_ImpOrder SET totalWriteoffFee=SUM_newWriteoffAmt FROM ( SELECT C.impOrderId impOrderId, SUM(ISNULL(B.newWriteoffAmt,0)) SUM_newWriteoffAmt FROM dbo.STG_ImpOrderWriteoff B RIGHT JOIN ( SELECT DISTINCT(impOrderId) AS impOrderId FROM deleted ) C ON B.impOrderId = C.impOrderId GROUP BY C.impOrderId ) D WHERE STG_ImpOrder.id = D.impOrderId END -- 反写统计信息(新增/更新情况下) ELSE IF(@opeFlag = ''I'') BEGIN UPDATE dbo.STG_ImpOrder SET totalWriteoffFee=SUM_newWriteoffAmt FROM ( SELECT C.impOrderId impOrderId, SUM(ISNULL(B.newWriteoffAmt,0)) SUM_newWriteoffAmt FROM dbo.STG_ImpOrderWriteoff B INNER JOIN ( SELECT DISTINCT(impOrderId) AS impOrderId FROM inserted ) C ON B.impOrderId = C.impOrderId GROUP BY C.impOrderId ) D WHERE STG_ImpOrder.id = D.impOrderId END -- <<<================ end 业务逻辑处理 ================>>> END