2009-07-08 2 views
0

У меня есть две таблицы Продукт (название продукта VARCHAR (10), рейтинг REAL) и обзор (RatingID INT, имя продукта VARCHAR (10), рейтинг INT). Оценка продукта является средним значением для всех рейтингов, приведенных в отзывах для данного спецификационного продукта.
Я хотел бы иметь триггер, который обновляет продукт всякий раз, когда новый отзыв вставляется или обновляется, но я просто не могу обернуть вокруг себя, как это сделать. Есть ли какой-то эквивалент db2 для вставленных() из SQL Server?Триггер 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 
    ) 

После Delete:

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

спасибо. Не совсем верно. Предложение WHERE для UPDATE отсутствует. – pmr

+0

Упс! Я не проверял Q должным образом. Вам также нужен триггер обновления. Я тоже опубликую его. –

+1

Это ИМХО на самом деле один из немногих вполне допустимых вариантов использования триггера :-) –

Смежные вопросы