请问如何简化下面的触发器?ALTER TRIGGER TriggerINCCount
ON dbo.DBRateProgram
FOR   INSERT
AS
   update DBProgram set CountOfPositive=CountOfPositive+1
   
   From DBProgram
   INNER JOIN Inserted 
   ON DBProgram.ProgramID = Inserted.ProgramID
   Where Inserted.RateType=0   update DBProgram set CountOfNeutral=CountOfNeutral+1
   
   From DBProgram
   INNER JOIN Inserted 
   ON DBProgram.ProgramID = Inserted.ProgramID
   Where Inserted.RateType=1 
 
  update DBProgram set CountOfNegative=CountOfNegative+1
   
   From DBProgram
   INNER JOIN Inserted 
   ON DBProgram.ProgramID = Inserted.ProgramID
   Where Inserted.RateType=2 
 
 

解决方案 »

  1.   

    update字段不同,基本没法简化
      

  2.   

    ALTER TRIGGER TriggerINCCount
    ON dbo.DBRateProgram
    FOR INSERT
    AS
      update DBProgram set
    CountOfPositive = CASE Inserted.RateType when 0 then CountOfPositive+1 else CountOfPositive end,
    CountOfNeutral = CASE Inserted.RateType when 1 then CountOfNeutral+1 else CountOfNeutral end,
    CountOfNegative = CASE Inserted.RateType when 2 then thenCountOfNegative+1 else thenCountOfNegative end
      From DBProgram
      INNER JOIN Inserted 
      ON DBProgram.ProgramID = Inserted.ProgramID