有四个表,分别是发货单主表,发货单子表,单据主表,单据子表
1、发货单主表
dlid        cdlcode
2、发货单子表
dlid       cinvcode     price
3、单据主表
id     cbuscode
4、单据子表
id   cinvcode     price其中,dlid 和id是随机号码,cdlcode和cbuscode都是发货单号码,cinvcode是货物编码,price是金额,并且表1和表2的dlid相同,表1的cdlcode和表3的cbuscode相同,表3的id和表4的id相同。
现在想写一个触发器,让表4的price在更新的时候,让表2的price自动更新成一样的。但是更新的行必须满足以下条件
1、两个表的cinvcode相同的行
2、根据表4的id查找相同的表3的id对应的cbuscode,再根据表3的cbuscode查找相同的表1的cdlcode对应的dlid,再根据表1的dlid找到表2里相同的dlid并更新当前行的price等于表4的price表比较多,也比较复杂,特出高分求答案,在线等!

解决方案 »

  1.   


    --UPDATE 触发器建立在 表4单据子--变量自己声明SELECT @id,@price=inserted.id
    IF UPDATE(price)
    begin
      update 发货单子表
      set price=@price
      where dlid in(select t1.dlid from 发货单主表 t1 inner join 单据主表 t3 on t1.cdlcode=t3.cbuscode where t3.id=@id)
    end
      

  2.   

    上面手误敲错了,应如下SELECT @id=id,@price=price from inserted
    IF UPDATE(price)
    begin
      update 发货单子表
      set price=@price
      where dlid in(select t1.dlid from 发货单主表 t1 inner join 单据主表 t3 on t1.cdlcode=t3.cbuscode where t3.id=@id)
    end