2009-07-08 5 views
0

Product (Productname VARCHAR (10), Rating REAL) 및 Review (RatingID INT, Productname VARCHAR (10), Rating INT) 테이블이 있습니다. 제품의 등급은 해당 제품의 평가에 제공된 모든 등급의 평균입니다.
나는 새로운 리뷰가 삽입되거나 업데이트 될 때마다 제품을 업데이트하는 방아쇠를 가지고 싶습니다. 그러나 어떻게해야 할지를 고민 할 수는 없습니다. SQL Server에서 inserted()에 해당하는 db2가 있습니까?DB2 트리거는 다른 테이블의 평균을 계산합니다.

약한 질문에 사과드립니다. 삽입 트리거 후

답변

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는 트리거에 대한 몇 가지 완벽하게 유효한 사용 사례 중 하나입니다. –

관련 문제