MySql, внешний ключ для нескольких столбцов одной таблицы - PullRequest
0 голосов
/ 03 июня 2019

Я хочу определить внешний ключ для имени и идентификатора, которые принадлежат одному и тому же табличному животному.

CREATE TABLE vet_appointment(
name VARCHAR(15),
ID CHAR(9),
date_tome DATETIME,
ID_client CHAR(9),
ID_vet CHAR(9),
PRIMARY KEY (date_time),
FOREIGN KEY (name, ID) REFERENCES animal(name, ID),
FOREIGN KEY (ID_client) REFERENCES client(ID),
FOREIGN KEY (ID_vet) REFERENCES vet(ID));

Эта часть кода «ИНОСТРАННЫЙ КЛЮЧ (имя, ИД), ССЫЛКИ на животное (имя, ИД)» выдает мне эту ошибку «150 Внешний ключ сформирован неправильно». Если я исключу этот внешний ключ, таблица будет создана. Итак, я знаю, что это проблема. Что я делаю не так?

1 Ответ

0 голосов
/ 03 июня 2019

Я подозреваю, что вы действительно хотите это:

CREATE TABLE vet_appointment(
    id int auto_increment primary key,
    id_animal int,
    date_time DATETIME,
    ID_cliente CHAR(9),
    ID_vet CHAR(9),
    unique (date_time),
    FOREIGN KEY id_animal) REFERENCES animal(id),
    FOREIGN KEY (ID_cliente) REFERENCES client(ID),
    FOREIGN KEY (ID_vet) REFERENCES vet(ID)
);

Название животного не должно быть в этой таблице. Должно быть в таблице animal.

Я также рекомендую использовать автоинкрементные целочисленные первичные ключи для вашей таблицы. Однако у вас может быть причина для предпочтения char(9) ключей.

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