当前位置: 代码迷 >> Sql Server >> 求写一个触发器!解决方案
  详细解决方案

求写一个触发器!解决方案

热度:99   发布时间:2016-04-27 12:53:58.0
求写一个触发器!
有三张表 A(SNO,GPA) 主键为SNO
  B(SNO,CNO,TNO,POINT) 主键为(SNO,CNO,TNO) 外键为(SNO,CNO)
  C(CNO,CREDIT) 主键为CNO

需求:一旦修改了POINT的值后 求相同SNO对应的 (POINT1*CREDIT1+POINT2+CREDIT2+.....)/(CREDIT1+CREDIT2+....)

如A中数据(s1,0)
B中数据为(s1,c1,t1,4.0),(s1,c2,t2,3.0)
C中数据为(c1,4),(c2,3),(c3,2)
则更新GPA=(4.0*4+3.0*3)/(4+3)

------解决方案--------------------
SQL code
if objectproperty(object_id('B_UPD'),'IsTrigger')=1drop trigger B_UPDgocreate trigger B_UPDon Bfor updateasif update(POINT)begin    update A        set GPA=case when t.CREDIT=0 then 0 else t.PC/t.CREDIT end        from (                select B.SNO,PC=sum(B.POINT*C.CREDIT), CREDIT=sum(C.CREDIT)                    from C,B,inserted i                    where C.CNO=B.CNO and B.SNO=i.SNO                    group by B.SNO             )t        where A.SNO=t.SNOendgo
  相关解决方案