簡體   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