大家帮我看下我这语句该怎么修改呢

tzwycn 2011-10-03 02:24:52
表格

A B C D E

100 200 300 0 600

100 200 300 10 600

101 202 295 420 600

99 199 99 10 600

100 400 600 350 600

这些数据有些是已经存在表格里的


当A+B+C+D<E 设置D=E-A-B-C
当A+B+C+D>E,A+B+C>E 设置A=100 B=200 C= 300 D=0
当A+B+C+D>E A+B+C=E 设置D=E-A-B-C

语句如下
Create trigger table1
On character.dbo.user_character
for update
As

IF A+B+C+D<E
begin
UPDATE 表
SET D=E-A-B-C
END
ELSE
IF A+B+C+D>E AND A+B+C>E
begin
UPDATE 表
SET A='100',B='200',C='300',D='0'
END
ELSE
IF A+B+C+D>E AND A+B+C=E
begin
UPDATE 表
SET D=E-A-B-C
END

请问我写的语句为什么不能用 提示列名无效 应该怎么改
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
怪众生太美丽 2011-10-03
  • 打赏
  • 举报
回复
这样写肯定是不对的A B C D E是表的列字段,而不是值变量,都没引用表怎么能使用列呢.
而且这感觉用存过来比较好的多,你以参数的传递进来要修改的参数:A,B,C,D,E并且直接用以上方法
判断它后执行。
怪众生太美丽 2011-10-03
  • 打赏
  • 举报
回复

这样写肯定是不定的A B C D E是表的列字段,而不是值变量,都没引用表怎么能使用列呢.
而且这感觉用存过来比较好的多,你以参数的传递进来要修改的参数:A,B,C,D,E并且直接用以上方法
判断它后执行。
qgqch2008 2011-10-03
  • 打赏
  • 举报
回复
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

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧