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