22,209
社区成员
发帖
与我相关
我的任务
分享
这样写肯定是不定的A B C D E是表的列字段,而不是值变量,都没引用表怎么能使用列呢.
而且这感觉用存过来比较好的多,你以参数的传递进来要修改的参数:A,B,C,D,E并且直接用以上方法
判断它后执行。
CREATE TABLE TB(id INT IDENTITY(1,1), A INT,B INT, C INT,D INT,E INT)//建一个主键id,表起码要有主键吧。。。
CREATE TRIGGER [dbo].[trig_tb] ON [dbo].[TB]
FOR UPDATE
AS
UPDATE T
SET T.D = T.E - T.A - T.B - T.C
FROM INSERTED I
LEFT JOIN TB T ON T.id = I.id
WHERE ( T.A + T.B + T.C + T.D < T.E )
OR ( T.A + T.B + T.C + T.D > T.E
AND T.A + T.B + T.C = T.E
) ;
UPDATE T
SET T.A = 100 ,
T.B = 200 ,
T.C = 300
FROM INSERTED I
LEFT JOIN TB T ON T.id = I.id
WHERE T.A + T.B + T.C + T.D > T.E
AND T.A + T.B + T.C > T.E