只能建在A表。create tr_a_update 
  on a
  for update
as
  set nocount on
  if update(bz)
      update b
      set  bz=i.bz
      from b,inserted i,deleted d
      where b.xh=i.xh and b.xh=d.xh
      and ......         ----你的表结构没有说清楚,可能还有其他连接条件
go

解决方案 »

  1.   

    CREATE TRIGGER mytrigger ON a
    FOR UPDATE,INSERT,DELETE
    AS
    UPDATE b
    SET bz=INSERTED.bz WHERE xh=INSERTED.xh
      

  2.   

    因为在B表中还需要有一些计算操作,必须以B表中的值作为条件,我在B表中写过触发器,但是只能修改一条
    具体情况如下
    A(djxh,bz)b(djxh,bz,bm,sl)a表中bz修改后,b表中以djxh为条件修改bz,然后选择bm相同的纪录累加sl赋值到当前纪录
      

  3.   

    create tr_a_update 
      on a
      for update
    as
      set nocount on
      if update(bz)
        begin
          update b2
          set  bz=i.bz,sl=(select sum(sl) from b b1 where b1.bm=b2.bm)
          from b b2,inserted i,deleted d
          where b2.djxh=i.djxh and b2.djxh=d.djxh
        end
    go
    这里还是不明白,怎么累加?
    包不包括当前记录的sl?
    根据什么条件,是单单bm,还是djxh加bm?
      

  4.   

    我在给你说的详细一下:
    a(djxh,shbz)
    b(djxh,spbm,shbz,zcsl)
    当a表修改shbz,b表修改对应djxh的记录shbz,(a表与b表的记录是一对多的关系)。同时,在b表中搜索与b表spbm相同的上一条记录,取出它的zcsl,与被修改记录的zcsl相加,赋到被修改记录的zcsl中,这中间是一个逐条计算的过程
    我本来的想法是,在a表的触发中写对b表的shbz的修改,然后在b表的触发中实现对b表中被修改记录zcsl的搜索和修改过程,可是,a表的触发实现了对b表n条记录shbz的修改之后,b表中的触发只实现了最后一条被修改记录的搜索和修改,我不知道这算不算是嵌套触发,如果想实现我的要求有没有什么方法呢?
    不知扬帆破浪兄是不是方便给我留一个容易找到你的联系方式,小弟初学sqlserver,任务赶的急,已经人仰马翻了
      

  5.   

    我没有即时的联系方式,短消息可能是最快的。
    其他朋友也请回复,这个楼主比较着急,但结构还是不很清楚,现在照他说的写了,但是觉得他的累加方式不合常理。
    create tr_a_update 
      on a
      for update
    as
      set nocount on
      if update(shbz)
        begin
          update b2
          set  shbz=i.shbz,zcsl=b2.zcsl+(select zcsl from b b1 where b1.bm=b2.bm and djxh=(select max(djxh) from b where bm=b2.bm and djxh<b2.djxh))
          from b b2,inserted i,deleted d
          where b2.djxh=i.djxh and b2.djxh=d.djxh
        end
    go
      

  6.   

    总算实现了,激动的热泪盈眶。对各位高手的鼎立相助感激涕零ing,尤其是斑竹,让小弟无以为报,不知道可不可以给这个帖子加分呀?
    小弟初学sqlserver,还在一头雾水的状态,问题多多,希望各位高手拨空稍加指点,感激不尽,分都是身外之物,只是希望能够多交几个志同道合的朋友