ОШИБКА: нет уникального ограничения, соответствующего данным ключам для ссылочной таблицы. PG12 - PullRequest
0 голосов
/ 11 июля 2020

Я использую Postgres 12:

CREATE TABLE w_table (
    id INT PRIMARY KEY
);

CREATE TABLE l_table (
    id INT GENERATED ALWAYS AS identity,
    w_id int NOT NULL REFERENCES w_table(id),
    PRIMARY KEY (w_id, id),
    UNIQUE (w_id, id)
)PARTITION BY LIST (w_id);

CREATE TABLE t_table (
    id INT GENERATED ALWAYS AS IDENTITY,
    w_id INT REFERENCES w_table(id) NOT NULL,
    l_id INT REFERENCES l_table(id) NOT NULL,
    PRIMARY KEY (w_id,id),
    UNIQUE (w_id,id)
)PARTITION BY LIST (w_id);

И получаю:

ERROR: there is no unique constraint matching given keys for referenced table "l_table"

Не могу понять, что я делаю не так.

Спасибо!

1 Ответ

1 голос
/ 11 июля 2020

Ошибка возникает из-за того, что:

l_id INT REFERENCES l_table(id) NOT NULL,

указывает на l_id.id, который сам по себе не является ограничением PRIMARY KEY или UNIQUE. PRIMARY KEY равно (w_id, id), поэтому вам нужно REFERENCE эту комбинацию. Ссылка w_table.id работает, потому что w_table.id - это PRIMARY KEY для этой таблицы. К вашему сведению, UNIQUE (w_id, id) дублирует PRIMARY KEY (w_id, id).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...