CREATE TRIGGER Tr_updateNewPrice
ON dbo.ProductColor 
FOR UPDATE
ASif update(NewPrice)
  
  begin
     declare @artcileCode varchar(50)
     declare @colourCode varchar(50)
     declare @newPrice money
     
     select 
        @artcileCode=ArticleCode,
        @colourCode=ColourCode,
        @newPrice=newPrice 
     from inserted 
     
     update productColor set newPrice=@newPrice 
     where ArticleCode=@artcileCode and ColourCode=@colourCode
     
  end
以上是触发器代码

解决方案 »

  1.   

    CREATE TRIGGER Tr_updateNewPrice
    ON dbo.ProductColor 
    FOR UPDATE
    AS
    begin
        if update(NewPrice)
            update p 
            set 
                newPrice=i.newPrice 
            from
                productColor p,
                inserted     i
            where 
                p.ArticleCode=i.artcileCode 
                and 
                p.ColourCode =i.colourCode
    end
    go
      

  2.   

    select @artcileCode=ArticleCode,@colourCode=ColourCode,@newPrice=newPrice from inserted  --该条SQL语句只能取得inserted表中最后条记录的值,因此只更新了一条记录。
      

  3.   

    CREATE TRIGGER Tr_updateNewPrice
    ON dbo.ProductColor 
    FOR UPDATE
    ASif update(NewPrice)
      
      begin
         declare @artcileCode varchar(50)
         declare @colourCode varchar(50)
         declare @newPrice money
         declare tempcur cursor for 
         
         select 
            ArticleCode,
            ColourCode,
            newPrice 
         from inserted 
        open tempcur
    fetch next from tempcur into @artcileCode,@colourCode,@newPrice
    while @@fetch_status=0
    begin
         
         update productColor set newPrice=@newPrice 
         where ArticleCode=@artcileCode and ColourCode=@colourCode
        fetch next from tempcur into @artcileCode,@colourCode,@newPrice
    end
         close tempcur
    deallocate tempcur
      end