Невозможно добавить ограничение внешнего ключа - работает для одного ограничения, но не для другого - PullRequest
0 голосов
/ 08 февраля 2020

Я создал следующие таблицы (есть больше атрибутов, но они не имеют отношения к вопросу):

CREATE TABLE PathData(
    path_outer_id int,
    path_inner_id int,
    PRIMARY KEY(path_outer_id, path_inner_id)
);

CREATE TABLE Node(
    node_id int AUTO_INCREMENT,
    max_path_outer_id int,
    max_path_inner_id int,
    PRIMARY KEY(node_id)
);

И попытался соединить их следующими командами:

ALTER TABLE Node ADD CONSTRAINT fk_1
FOREIGN KEY(max_path_outer_id) REFERENCES PathData(path_outer_id);

ALTER TABLE Node ADD CONSTRAINT fk_2
FOREIGN KEY(max_path_inner_id) REFERENCES PathData(path_inner_id);

Однако, несмотря на то, что fk_1 работал, fk_2 приводит к ошибке «Невозможно добавить внешний ключ», и я не могу понять, почему, поскольку он делает то же самое, что и fk_1, за исключением другого атрибута. Я пытался найти причину, но я не могу найти ничего похожего.

Я подумал, что это может быть связано с объявлением inner_id PK после external_id, но это не выглядит логичным.

...