小编Han*_*man的帖子

PostgreSQL:表仅引用复合主键的一部分

我正在使用 Postgres 9.6.2 创建电影和电视节目流媒体服务数据库(用于学校项目)。我遇到以下错误:

没有与引用表“watchedepisodes”的给定键匹配的唯一约束

只要用户观看了至少一集(显示在 WatchedEpisodes 表中),下面的电视收视率表就会接受电视节目并允许用户对其进行评分。由于 WatchedEpisodes 具有用户 id、电视节目 id、季节和剧集的复合主键,因此它不允许我仅从该表中引用仅包含 uid 和 tid 的复合键。

CREATE TABLE WatchedEpisodes (
  uid int unique references Users(uid),
  tid int,
  season int,
  episode int,
  FOREIGN KEY(tid, season, episode) REFERENCES Episodes(tid, season, episode),
  PRIMARY KEY (uid, tid, season, episode)
);

CREATE TABLE TVRatings (
  uid int,
  tid int,
  rating int check (rating > 0 and rating < 6),
  FOREIGN KEY(uid, tid) REFERENCES WatchedEpisodes(uid,tid),
  PRIMARY KEY(uid, tid)
);
Run Code Online (Sandbox Code Playgroud)

想知道是否有办法只引用该组合键的一部分。这些只是我的两个表格,因此如果需要更多信息,我可以添加更多信息。

sql database postgresql unique-constraint composite-primary-key

6
推荐指数
1
解决办法
1859
查看次数