列值更新

zhouzzx 2003-12-14 09:44:23
有一个表table1,如下
A B C
0011 1 0
0012 2 1
0013 3 0
0014 5 1
... ... ...
希望更新B列值,将C列值为1的同行B列值改为负值,如何写此语句
...全文
27 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorycyz 2003-12-15
  • 打赏
  • 举报
回复
update table1 set B=-B where C=1
zjcxc 元老 2003-12-15
  • 打赏
  • 举报
回复
--下面是测试

--测试数据
create table table1(A varchar(4),B int,C int)
insert into table1
select '0011',1,0
union all select '0012',2,1
union all select '0013',3,0
union all select '0014',5,1
go

--处理触发器
create trigger t_update on table1
after update
as
update table1 set b=-b.b
from table1 a join inserted b on a.a=b.a
where b.c=1 and b.b>0
go

--更新测试
update table1 set b=100

--显示测试结果
select * from table1
go

--删除测试环境
drop table table1

/*--测试结果
A B C
---- ----------- -----------
0011 100 0
0012 -100 1
0013 100 0
0014 -100 1

(所影响的行数为 4 行)
--*/
zjcxc 元老 2003-12-15
  • 打赏
  • 举报
回复
--处理触发器还要调整一下:

create trigger t_update on table1
after update
as
update table1 set b=-b.b
from table1 a join inserted b on a.a=b.a
where b.c=1
and b.b>0 --如果仅正值改为负值,就要加上此条件
go
zjcxc 元老 2003-12-15
  • 打赏
  • 举报
回复
--触发器
create trigger on table1
after update
update table1 set b=-b
from table1 a join inserted b on a.a=b.a
where a.c=1
welyngj 2003-12-14
  • 打赏
  • 举报
回复
UPDATE table1
SET B=-b.B
FROM table1,table1 as b
WHERE table1.a=b.a AND table1.c=1
azsoft 2003-12-14
  • 打赏
  • 举报
回复
用触发器update

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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