2009-07-08 154 views
0

我得到了两个表Product(Productname VARCHAR(10),Rating REAL)和Review(RatingID INT,Productname VARCHAR(10),Rating INT)。 该产品的评级是对该特定产品的评论中给出的所有评级的平均值。
我想要一个触发器,每当插入新评论或更新时更新产品,但我无法围绕如何做到这一点。 是否有一些等同于从SQL Server插入()的db2?一个DB2 Trigger来计算另一个表的平均值

我对这个弱小的问题表示歉意。

回答

4

DB2插入触发后:

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

+0

谢谢。 虽然不完全正确。 UPDATE的WHERE子句缺失。 – pmr 2009-07-08 14:56:48

相关问题