【发布时间】: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