【问题标题】:Postgresql - there is not unique constraint matching given keys for referenced table; referencing a key from own tablePostgresql - 引用表的给定键没有唯一约束匹配;从自己的表中引用一个键
【发布时间】:2016-10-14 15:19:37
【问题描述】:

我创建了一个表(团队),它有一个由 id、项目 id 和用户 id 组成的复合主键。每个主键都引用其他表中的一个键,除了 id。现在我想添加一个引用团队自己 id 的键(team_id),因为我想迎合一个子团队,这个 team_id 将包含父团队的 id。

我遇到了一个错误:'没有唯一约束匹配给定键的引用表“团队”'。

我是否错误地理解复合主键中每个键的每个可能组合都是团队的唯一约束? 我错过了什么?

CREATE TABLE team (

id varchar NOT NULL,
project_id varchar NOT NULL, -- team should always have associated project
user_id varchar NOT NULL, -- team member id
team_id varchar, -- parent team id
create_date date NOT NULL,
create_time time NOT NULL,
name varchar,
description text,
PRIMARY KEY (id, project_id, user_id),
FOREIGN KEY (project_id) REFERENCES project (id)
   ON UPDATE CASCADE
   ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES person (id)
   ON UPDATE CASCADE
   ON DELETE CASCADE,
FOREIGN KEY (team_id) REFERENCES team (id)
   ON DELETE CASCADE
   ON UPDATE CASCADE
);

【问题讨论】:

    标签: postgresql reference


    【解决方案1】:
    parent_team_id varchar,
    parent_team_project_id varchar,
    parent_team_user_id varchar,
    foreign key (
        parent_team_id, parent_team_project_id, parent_team_user_id
    ) references team (id, project_id, user_id);
    

    但是主键很奇怪。你确定吗?

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 2016-08-13
      • 1970-01-01
      • 2017-08-11
      • 2016-04-13
      • 2022-09-27
      • 1970-01-01
      相关资源
      最近更新 更多