日期:2014-05-17  浏览次数:20640 次

很急,求帮助。sql serve 触发器问题
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 费用合计 = 新业务费 + 通话费;
   end

create 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 触发器

------解决方案--------------------
  楼主测测看是否正确
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.手机号码
   end

create trigger t1  //当话费信息表中的费用合计发送更新后,将更新后的费用合计赋给
on 话费信息表    //交费表中的应交费用,
after update
as begin
   update a
   set 应交费用=d.应交费用
   from 交费表 as a
inner join deleted  as d on d.手机号码=a.手机号码
   end

------解决方案--------------------