Как добавить внешний ключ для таблицы B, ссылаясь на таблицу A, и внешний ключ для таблицы A, ссылаясь на таблицу B в PostgreSQL? - PullRequest
0 голосов
/ 08 января 2019

Мне нужно добавить внешние ключи для двух таблиц друг друга. Можно ли это сделать?

Как пример:

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 голосов
/ 08 января 2019

Добавьте внешние ключи после создания обеих таблиц:

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);
...