导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

列值更新

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列值改为负值,如何写此语句
...全文
4 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorycyz 2003-12-15
update table1 set B=-B where C=1
回复
--下面是测试

--测试数据
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 行)
--*/
回复
--处理触发器还要调整一下:

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
回复
--触发器
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
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告