insert price_updatelog (proid,barocde,oldprice,newprice) valuse (@proid,@barcode,@oldprice,@newprice)

解决方案 »

  1.   

    trigger: trg_price_update on goods
    for update
    as 
    declare @proid char(3)
    declare @barcode char(3)
    declare @oldproce number
    declare @newproce number
    if update(pirce) 
    begin
    select @oldprice=oldprice from deleted  --得到旧的Oldprice
    select @proid=proid,@barcode=barcode,@newprice=newprice from inserted
    insert price_updatelog (proid,barocde,oldprice) valuse (@proid,@barcode,@oldprice,@newprice)
    end;
      

  2.   

    //select @oldprice=   如何取得变换前的值;
    =====>
    select @oldprice=col from deleted
      

  3.   

    create trigger trg_price_update 
    on goods
    for update
    asif update(price)
    begin
          insert price_updatelog (proid,barocde,oldprice) 
          select I.proid
                 ,I.barcode 
                 ,D.price
                 ,I.price
          from deleted D
          join inserted I on D.proid=I.proid
                             and D.barcode=I.barcode
    end
      

  4.   

    vivianfdlpw的触发器考虑到了update多个记录时的情况。要注意update多个记录时别出错!
      

  5.   

    thanks ,我明白,我以为deleted 是用来保存delete数据,