当前位置: 代码迷 >> Sql Server >> 怎么自动在输入一个表的数据时,改变另一个表的数据
  详细解决方案

怎么自动在输入一个表的数据时,改变另一个表的数据

热度:11   发布时间:2016-04-24 09:02:11.0
如何自动在输入一个表的数据时,改变另一个表的数据?
create table shopping(      --订单
shno int primary key identity(50000,1),--订单编号
sbna varchar(20), --买家姓名
pno int ,--手机编号
pnu varchar(20) not null,--手机型号
ppr varchar(20) not null,--手机价格
pco int not null,--手机数量
shal as ppr*pco     ,--总价
ssnu int ,--销售员编号
foreign key (ssnu) references servers(snu),--servers的外码
)
create table servers(
snu int primary key identity(70000,1),--销售员编号
sna varchar(20) not null,--销售员姓名
sse char(2) check(sse in('男','女')), --销售员性别
sph varchar(20) not null,--销售员电话
sss int ,--销售的手机数
smo float(1) ,--销售的金额
)


如何在输入订单时,根据输入的销售员编号,在已有的销售员表中的销售员,改变相应的销售手机数,和销售金额。、
比如,我输入订单号:(‘江风’,10001,htc one,2000,1,2000,70000)
销售员表中的(7000,张三,男,15236544521,0,0)变为(7000,张三,男,15236544521,1,2000)
求大神帮忙!!!!
------解决思路----------------------
1.代码里面当订单成功处理时加一个销售员 数据处理。
2.用触发器,不建议用这个。
------解决思路----------------------
觸發器例子,感覺你的表設計應該怎麼合理,銷售表至少要時間字段吧。到時候你們老闆叫你統計哪個月的哪一年的,你不就悲劇了。

create trigger tr_shopping 
on shopping
after insert,update,delete
as begin
 --新增
 if not exists(select 1 from deleted)
  begin
   update a set sss=b.sumpc0,smo=b.sumshal
   from [servers] a
   join (select ssnu,sum(pc0) as sumpco,sum(shal) as sumshal from inserted
         group by ssnu) b
   on a.snu=b.ssnu
  end
 --刪除
 else if not exists(select 1 from inserted)
  begin
   update a set sss=sss-b.sumpc0,smo=smo-b.sumshal
   from [servers] a
   join (select ssnu,sum(pc0) as sumpco,sum(shal) as sumshal from deleted
         group by ssnu) b
   on a.snu=b.ssnu  
  end
  ---更新
 else
   begin  
    update a set sss=b.sumpc0,smo=b.sumshal
   from [servers] a
   join (select ssnu,sum(pc0) as sumpco,sum(shal) as sumshal from shopping
         group by ssnu) b
   on a.snu=b.ssnu
     end
end
   
  相关解决方案