update tb set col=b.col from tb a join inserted b on a.id=b.id
    join tb2 c on a.id=c.id
楼主的语句应该改成这种样式进行更新。

解决方案 »

  1.   

    CREATE TRIGGER sf_dispatchlists ON [dbo].[DispatchLists] 
    FOR INSERT,UPDATE 
    as 
    update DispatchLists 
    set iunitprice=iinvncost, 
        itaxunitprice=iinvncost+iinvncost*17/100, 
        imoney=round(iinvncost*Inserted.iquantity,2), 
        itax=round(iinvncost*Inserted.iquantity*17/100,2), 
        isum=round(iinvncost*Inserted.iquantity+iinvncost*Inserted.iquantity*17/100,2), 
        inatunitprice=iinvncost*iexchrate, 
        inatmoney=round(iinvncost*iexchrate*Inserted.iquantity,2), 
        inattax=round(iinvncost*iexchrate*Inserted.iquantity*17/100,2), 
        inatsum=round(iinvncost*iexchrate*Inserted.iquantity+iinvncost*iexchrate*Inserted.iquantity*17/100,2) 
    from inserted 
    inner join inventory on inserted.cinvcode=inventory.cinvcode 
    --inner join dispatchlist on inserted.dlid=dispatchlist.dlid 
    where inserted.dlid=dispatchlist.dlid
    alter table [dbo].[DispatchLists] disable trigger [sf_dispatchlists] 
      

  2.   

    也就是说把你的DispatchLists表和新插入的记录所在的虚拟表inserted建立关系。
      

  3.   

    这句inner join dispatchlist on inserted.dlid=dispatchlist.dlid 不能去掉的,我用到了dispatchlist表中的字段iexchrate
      

  4.   

    我是这样改的:CREATE TRIGGER sf_dispatchlists ON [dbo].[DispatchLists] 
    FOR INSERT,UPDATE
    asupdate DispatchLists
    set iunitprice=iinvncost,
        itaxunitprice=iinvncost+iinvncost*17/100,
        imoney=round(iinvncost*Inserted.iquantity,2),
        itax=round(iinvncost*Inserted.iquantity*17/100,2),
        isum=round(iinvncost*Inserted.iquantity+iinvncost*Inserted.iquantity*17/100,2),
        inatunitprice=iinvncost*iexchrate,
        inatmoney=round(iinvncost*iexchrate*Inserted.iquantity,2),
        inattax=round(iinvncost*iexchrate*Inserted.iquantity*17/100,2),
        inatsum=round(iinvncost*iexchrate*Inserted.iquantity+iinvncost*iexchrate*Inserted.iquantity*17/100,2)
    from inserted inner join inventory 
    on inserted.cinvcode=inventory.cinvcode
    inner join dispatchlist on inserted.dlid=dispatchlist.dlid
    where dispatchlists.dlid=inserted.dlid