如何使用共享主外键创建数据库模式?

时间:2015-09-14 13:36:47

标签: database postgresql

我的目标是建立一个子表,其主键和外键都是同一列,并引用主表的ID。

{company: {name: "Some Person"}}

但是这将创建一个包含两列的表映射:id [PK]和test_fk作为外键列。我该如何组合它们?

1 个答案:

答案 0 :(得分:1)

您误解了foreign key子句的工作原理。您可以在其中列出现有列的名称。列出列名称将创建任何新列。任何FK列必须已在"列部分"中定义。 create table声明。

所以你的陈述根本不起作用,因为表test没有名为fk_id的列。您需要在那里提供已定义的列id的名称:

CREATE TABLE test(
    id integer NOT NULL,
    name varchar,
    CONSTRAINT test_pk PRIMARAY KEY (id),
    CONSTRAINT test_fk FOREIGN KEY (id) --- <<< this was wrong
        REFERENCES main_table (id) MATCH SIMPLE
)