gpt4 book ai didi

SQL 代替触发器

转载 作者:行者123 更新时间:2023-12-03 17:59:11 24 4
gpt4 key购买 nike

我有这些表:

  • 电影(mID、片名、年份、导演)
  • 审稿人(rID,姓名)
  • 评分(rID、mID、星数、ratingDate)

  • 和一些观点:
  • 查看 LateRating包含 2011 年 1 月 20 日之后的电影评分。 View 包含电影 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 星的电影。该 View 包含电影 ID 和电影标题。
    create view HighlyRated as 
    select mID, title
    from Movie
    where mID in (select mID from Rating where stars > 3)
  • 查看 NoRating包含数据库中没有评分的电影。该 View 包含电影 ID 和电影标题。
    create view NoRating as 
    select mID, title
    from Movie
    where mID not in (select mID from Rating)

  • 这是我的数据集: http://dfiles.eu/files/vlylwacdd

    我被要求编写一个代替触发器来更新 View LateRating 的标题属性。我该怎么做?我不习惯触发和查看太多:(

    最佳答案

    像这样的东西:

    CREATE trigger update_LateRating_title INSTEAD OF UPDATE OF title ON LateRating
    BEGIN
    UPDATE Movie SET title = new.title WHERE movie.mID = old.mID;
    END;

    根据评论中的要求,这是一个触发器,用于仅更新 LateRating 中评论大于 2 的电影:
    CREATE trigger update_LateRating_title INSTEAD OF 
    UPDATE OF title ON LateRating
    BEGIN
    UPDATE Movie SET title = new.title
    WHERE movie.mID = old.mID
    AND movie.mID IN (SELECT mID FROM LateRating WHERE stars > 2);
    END;

    (有不同的方式来解释这个后来的请求。应该允许在某处有超过 2 星的电影的标题更新,还是只允许实际上有超过 2 星的记录?我的代码是前一种选择)。

    关于SQL 代替触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14537280/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com