Я создал следующий триггер в базе данных MySQL. Это для звездной рейтинговой системы. Всякий раз, когда строка добавляется в таблицу оценок, она должна добавляться в таблицу Rating_totals.
DELIMITER$$
create trigger update_vote_after_insert_trig before insert
on ratings
for each row begin
if bookID = new.bookID then
update ratings_totals set
total_votes = total_votes + 1,
total_rating = total_rating + new.rating,
overall_rating = total_rating / total_votes;
where
bookID = new.bookID;
ELSE
insert into ratings_totals set bookID = new.bookID, total_votes = total_votes, total_rating = total_rating, overall_rating = overall_rating;
END IF;
END$$
DELIMITER ;
Моя проблема в том, что таблица Rating_totals неправильно обновлена. Он содержит четыре строки: bookID, total_votes, total_rating и total_rating. Обновлена только таблица bookID; остальные остаются на уровне 0.
Моя цель - ВСТАВИТЬ строку в первый раз и обновить ее после этого. Я правильно это делаю?