Я создал следующие таблицы (есть больше атрибутов, но они не имеют отношения к вопросу):
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, но это не выглядит логичным.