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