代码之家  ›  专栏  ›  技术社区  ›  pmr

用于计算另一个表中平均值的DB2触发器

  •  0
  • pmr  · 技术社区  · 15 年前

    我有两个表product(productName varchar(10),rating real)和review(ratingid int,productName varchar(10),rating int)。 产品的评级是对该特定产品的评审中给出的所有评级的平均值。
    我想有一个触发器,每当插入或更新一个新的评论时,它就会更新一个产品,但我就是不能全神贯注于如何更新。 是否有一些DB2与来自SQL Server的inserted()等效?

    我为这个薄弱的问题道歉。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Rashmi Pandit    15 年前

    DB2 AFTER INSERT触发器:

    CREATE TRIGGER NEW_REVIEW
     AFTER INSERT ON REVIEW
      REFERENCING NEW AS N_ROW
       FOR EACH ROW
        UPDATE PRODUCT SET Rating = (
          Select AVG(Rating) 
          from Review 
          where ProductName = N_ROW.ProductName
          )
    

    更新后:

    CREATE TRIGGER NEW_REVIEW
     AFTER UPDATE ON REVIEW
      REFERENCING NEW AS N_ROW
       FOR EACH ROW
        UPDATE PRODUCT SET Rating = (
          Select AVG(Rating) 
          from Review 
          where ProductName = N_ROW.ProductName
          )
    

    删除后:

    CREATE TRIGGER NEW_REVIEW
     AFTER DELETE ON REVIEW
      REFERENCING OLD AS O_ROW
       FOR EACH ROW
        UPDATE PRODUCT SET Rating = (
          Select AVG(Rating) 
          from Review 
          where ProductName = O_ROW.ProductName
          )
    

    退房 CREATE TRIGGER statement 更多信息。