MySQLデータベースに以下のトリガを作成しました。これは星評価システムのためのものです。レーティングテーブルに行が追加されるたびに、これがratings_totalsテーブルに追加されます。MySQLのトリガーがテーブルを更新しない
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 ;
私の問題は、ratings_totalsテーブルが正しく更新されていないことです。これには、bookID、total_votes、total_rating、およびoverall_ratingという4つの行が含まれています。 bookIDテーブルのみが更新されます。残りは0のままです。
私の目標は、最初に行を挿入し、その後に更新することです。私はこの権利をしていますか?
なぜあなたは挿入してから更新しますか?なぜあなたはすぐに挿入しないのですか? –
最初の挿入後、同じ行(つまり、評価されている項目ごとに1行)を更新したいだけです。私は同じアイテムのたびに新しい行を挿入したくありません。それは意味をなさないでしょう。 –
私は今すぐ挿入ラインを取り出しましたが、それは違いはありません。トリガはまだ機能しません。 –