如何在PostgreSQL中通过引用表A为表B添加外键,并通过引用表B为表A添加外键?

时间:2019-01-08 10:56:08

标签: postgresql ddl

我需要为两个表添加一个外键。能做到吗?

例如:

CREATE SCHEMA IF NOT EXISTS schema1;

CREATE TABLE schema1.tableA
    (
        id serial NOT NULL,
        tableB_id integer,
        PRIMARY KEY (id),
        FOREIGN KEY (tableB_id) REFERENCES schema1.tableB (id)
    );

    CREATE TABLE schema1.tableB
    (
        id serial NOT NULL,
        tableA_id integer,
        PRIMARY KEY (id),
        FOREIGN KEY (tableA_id) REFERENCES schema1.tableA(id)
    );

以上查询会导致错误!

  

错误:关系“ schema1.tableb”不存在SQL状态:42P01

可以做到这一点还是有更好的解决方案? 我正在使用PostgreSQL 10.5版和pgAdmin 3.6

1 个答案:

答案 0 :(得分:2)

在创建两个表后添加外键:

CREATE SCHEMA IF NOT EXISTS schema1;
CREATE TABLE schema1.tableA
(
    id serial NOT NULL,
    tableB_id integer,
    PRIMARY KEY (id)
);

CREATE TABLE schema1.tableB
(
    id serial NOT NULL,
    tableA_id integer,
    PRIMARY KEY (id)
);

ALTER TABLE schema1.tablea
  add FOREIGN KEY (tableB_id) REFERENCES schema1.tableB (id);

ALTER TABLE schema1.tableb
  add foreign key (tableA_id) REFERENCES schema1.tableA(id);