美好的一天我有一个在SQL中存储信息的外部程序,我试图在该表中的某些字段发生更改时执行更新表的触发器。
因此,每当valid
,Contractual Amount
和ufAPCHANG1EAMNT
中的任何值发生变化时,我都会更新一列ufAPHANGE2AMNT
。
一个人可以更改这些值中的一个或全部,可以是+ ve或-ve然后如果它们是对这些字段的任何更改,ufAPCHANGE3AMNT
应该相应地更新但是添加+ ve量并减去负数。
请你检查我的代码,让我知道我哪里出错了。
Contractual Amount
答案 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;