私はこれらのテーブルを持っています:
- 映画(mID、タイトル、年、監督)
- レビュアー(rID、name)
- 評価(rID、mID、星、ratingDate)
といくつかのビュー:
ビュー
LateRating
には、2011年1月20日以降の映画の評価が含まれます。ビューには、映画ID、映画のタイトル、星の数、および評価日が含まれます。create view LateRating as select distinct R.mID, title, stars, ratingDate from Rating R, Movie M where R.mID = M.mID and ratingDate > '2011-01-20'
ビュー
HighlyRated
には、3つ星を超える評価が少なくとも1つある映画が含まれています。ビューには、映画IDと映画タイトルが含まれています。create view HighlyRated as select mID, title from Movie where mID in (select mID from Rating where stars > 3)
ビュー
NoRating
には、データベースに評価のない映画が含まれています。ビューには、映画IDと映画タイトルが含まれています。create view NoRating as select mID, title from Movie where mID not in (select mID from Rating)
これが私のデータセットです:https ://prod-c2g.s3.amazonaws.com/db/Winter2013/files/viewmovie.sql
ビューLateRatingのstars属性の更新を可能にする代わりのトリガーを作成するように求められます。これが私のアプローチです。
CREATE trigger update_LateRating_title INSTEAD OF
UPDATE OF stars ON LateRating
BEGIN
UPDATE Rating SET stars = stars - 2
WHERE Rating.mID = old.mID
AND Rating.mID IN (SELECT stars FROM Rating WHERE stars > 2);
END;
それはほぼ正しい答えを与えますが、201 101 4 2011-01-27.4であるべきであるという間違った行が1つだけあります。2。何が問題なのですか?