日期:2014-05-19  浏览次数:20720 次

更新的问题~~
比如有一个表     a
Name             Value
  a                       2
  a                       3
  a                       4
  b                       1
  b                       2
  b                       3
    有另外一个表   b   部分是由   a的到的
Name           AllValue         OtherValue
a                     10                     ewfefasf
b                     6                           fafdas

如何在更新表a     的时候     自动更新表   b了,   用触发器要怎么写了   ,当然b     表OtherValue不能变,     还有在a中添加一条     c           6   的记录
  在   b表中也自动增加记录c    


    给个提示     写个触发器例子,或者提供别的思路也可以


------解决方案--------------------
少看了个
create trigger abc on a for insert,update as
if exists(select 1 from b where name in(select name from a))
update b set AllValues=(select sum(Value) from a) where name=(select name from inserted)
else
insert b select * from inserted
go

------解决方案--------------------
create trigger tri_upins on a --在A表建立触发器
after insert,update
as
if update(Value) or update(Name) --判断用户是否在这两个列上进行了更新操作
update b set AllValue=(select sum(Value) from a) where name=(select Name from inserted) --重新进行统计,条件是inserted 临时表的Name字段
if exists(select * from inserted) --判断用户是否插入了数据
insert into b select * from inserted

------解决方案--------------------
如果同时插入:

insert a select 'b ',3 union select '3 ' , 3 union select 'c ' , 5 这个触发器可以成功吗?