【问题标题】:How to create database schema with shared primary foreign key?如何使用共享主外键创建数据库模式?
【发布时间】:2015-09-14 13:36:46
【问题描述】:

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

CREATE TABLE main_table(
    id integer NOT NULL,
    //some fields
)

CREATE TABLE test(
    id integer NOT NULL,
    name varchar,
    CONSTRAINT test_pk PRIMARAY KEY (id),
    CONSTRAINT test_fk FOREIGN KEY (fk_id)
        REFERENCES main_table (id) MATCH SIMPLE
)

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

【问题讨论】:

    标签: database postgresql


    【解决方案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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-18
      • 2020-03-03
      • 2010-11-01
      • 2016-08-20
      • 2013-07-04
      • 1970-01-01
      相关资源
      最近更新 更多