繁体   English   中英

如何引用具有多个主键的 postgres 表

[英]How to reference a postgres table with multiple primary keys

如何创建一个引用该表的外部参照表?

CREATE TABLE reviewer (
  screen_name integer,
  identity_provider text
  CONSTRAINT identity PRIMARY KEY (screen_name, identity_provider)
);

这是我迄今为止尝试过的:

CREATE TABLE business_reviewer_xref (
  reviewer_screen_name integer,
  reviewer_identity_provider text,
  CONSTRAINT reviewer_identity UNIQUE (reviewer_screen_name, reviewer_identity_provider),
  reviewer_identity REFERENCES reviewer(identity)
);
CREATE TABLE business_reviewer_xref (
  reviewer_screen_name integer,
  reviewer_identity constraint REFERENCES reviewer(identity)
);
CREATE TABLE business_reviewer_xref (
  reviewer_screen_name integer,
  reviewer_identity REFERENCES reviewer(identity)
);

一个表不能有多个主键。 它只能有一个或没有。 但是主键当然可以包含多于一列(当然至少包含一列)。 要引用这样的多列主键,您需要为被引用列的主键中的每一列在引用表中对应一个列。

要定义外键约束,请按照外键定义元组中引用表中主键约束中的对应列出现的顺序列出引用表中的相应列。 还要保持引用列的元组定义中的顺序。

在你的情况下:

CREATE TABLE business_reviewer_xref
             (reviewer_screen_name integer,
              reviewer_identity text,
              FOREIGN KEY (reviewer_screen_name,
                           reviewer_identity)
                          REFERENCES reviewer
                                     (screen_name,
                                      identity));

请注意,与主键约束相比,外键约束不会隐式设置唯一约束。 如果您也想要唯一性,则必须为此定义另一个约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM