SQL触发器更新

时间:2016-10-17 13:31:34

标签: sql-server triggers

美好的一天我有一个在SQL中存储信息的外部程序,我试图在该表中的某些字段发生更改时执行更新表的触发器。

因此,每当validContractual AmountufAPCHANG1EAMNT中的任何值发生变化时,我都会更新一列ufAPHANGE2AMNT

一个人可以更改这些值中的一个或全部,可以是+ ve或-ve然后如果它们是对这些字段的任何更改,ufAPCHANGE3AMNT应该相应地更新但是添加+ ve量并减去负数。

请你检查我的代码,让我知道我哪里出错了。

Contractual Amount

1 个答案:

答案 0 :(得分:1)

我建议尽可能使用简单查询:

ALTER TRIGGER dbo.trgContractualAmt ON dbo.Vendor
    AFTER UPDATE
AS
    BEGIN
        UPDATE
            V
        SET
            ufAPContAmt += CASE WHEN (V.ufAPCHANGE1AMT <> I.ufAPCHANGE1AMT)
                                THEN I.ufAPCHANGE1AMT
                                ELSE 0
                           END
            + CASE WHEN (V.ufAPCHANGE2AMNT <> I.ufAPCHANGE2AMNT)
                   THEN I.ufAPCHANGE2AMNT
                   ELSE 0
              END
            + CASE WHEN (V.ufAPCHANGE3AMNT <> I.ufAPCHANGE3AMNT)
                   THEN I.ufAPCHANGE3AMNT
                   ELSE 0
              END
        FROM
            Vendor V
        INNER JOIN inserted I
            ON V.DCLink = I.DCLink;

    END;