create trigger t   //当客户受理表中插入一行数据后,将这行数据中的新业务费用
on 客户受理表      //与话费信息表中的新业务费相加的赋给新业务费
after insert       //最后将话费信息表中的童话费与新业务费相加的和赋给费用合计。
as begin
   declare @id char(11), @money money;
   select @id = 手机号码, @money = 新业务费用 from inserted;
   update 话费信息表 set 新业务费 = 新业务费 + @money where 手机号码 = @id;
   update 话费信息表 set 费用合计 = 新业务费 + 通话费;
   endcreate trigger t1  //当话费信息表中的费用合计发送更新后,将更新后的费用合计赋给
on 话费信息表    //交费表中的应交费用,
after update
as begin
   declare @name varchar(11), @c money;
   select @name = 手机号码, @c = 费用合计 from inserted
   update 交费表 set 应交费用 = @c where 手机号码 = @name;
   end问题是:当我再在客户受理表插入数据是, 交费表中的应交费用显示的是上一次插入数据时的费用合计,
该怎样修改呢?SQL触发器

解决方案 »

  1.   

      楼主测测看是否正确
    create trigger t   //当客户受理表中插入一行数据后,将这行数据中的新业务费用
    on 客户受理表      //与话费信息表中的新业务费相加的和赋给新业务费
    after insert       //最后将话费信息表中的童话费与新业务费相加的和赋给费用合计。
    as begin
       update a
       set 新业务费=a.新业务费+i.新业务费用,费用合计=a.新业务费+i.新业务费用+a.通话费
       from inserted as i 
    inner join 话费信息表 as a on i.手机号码=a.手机号码
       endcreate trigger t1  //当话费信息表中的费用合计发送更新后,将更新后的费用合计赋给
    on 话费信息表    //交费表中的应交费用,
    after update
    as begin
       update a
       set 应交费用=d.应交费用
       from 交费表 as a
    inner join deleted  as d on d.手机号码=a.手机号码
       end
      

  2.   

    楼主应该把表结构帖出来,
    客户受理表
    话费信息表
    交费表看你想要的结果,至少每一次通话都要有话费明细,结果不用保存到数据表,用一条统计的sql语句可以得到上一次插入、更新数据时的费用合计,