2009-07-08 8 views
0

Product(Productname VARCHAR(10)、Rating REAL)とReview(RatingID INT、Productname VARCHAR(10)、Rating INT)の2つのテーブルがあります。 製品の評価は、その指定製品に対するレビューで与えられたすべての評価の平均です。
新しいレビューが挿入または更新されるたびに製品を更新するトリガーが必要ですが、どうすればいいか分かりません。 SQL Serverからinserted()に相当するdb2がありますか?DB2トリガーで別のテーブルの平均を計算する

弱い質問に対する私の謝罪。 AFTER INSERTトリガー

答えて

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

+0

おっと!私はQを正しくチェックしなかった。更新トリガーも必要です。私もそれを投稿します。 –

+1

これはIMHOですが、実際にトリガーのためのいくつかの完全に有効なユースケースの1つです:-) –