Ограничение FOREIGN KEY поможет Mysql - PullRequest
0 голосов
/ 04 июля 2018

Я проверяю mysql и работаю над составлением внешних ключей при создании таблиц. Однако, когда я создаю внешний ключ, я получаю синтаксическую ошибку.

CREATE TABLE IF NOT EXISTS staff (
    staff_id INT(5) NOT NULL,
    staff_first_name VARCHAR(20) NOT NULL,
    staff_last_name VARCHAR(20) NOT NULL,
    staff_phone_number VARCHAR(15) NOT NULL,
    staff_email_address VARCHAR(30) NOT NULL,
    CONSTRAINT staff_id_pk PRIMARY KEY (staff_id)
    CONSTRAINT staff_id_fk FOREIGN KEY (staff_id)
    REFERENCES computer_staff (staff_id)
);

Кто-нибудь может увидеть, что я здесь не так сделал?


EDIT:

Сообщение об ошибке я получаю как:

19: 35: 55 CONSTRAINT staff_id_fk FOREIGN KEY (staff_id), REFERENCES computer_staff (staff_id)) Код ошибки: 1064. В синтаксисе SQL имеется ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который можно использовать рядом с 'CONSTRAINT staff_id_fk FOREIGN KEY (staff_id), ССЫЛКИ computer_staff (staff_' в строке 1 0,00025 сек

ОБНОВЛЕНИЕ: Код ошибки: 1215. Невозможно добавить ограничение внешнего ключа 0,110 с

Как разрешить код ошибки 1215 ??

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Попробуйте этот код

CREATE TABLE IF NOT EXISTS staff (
staff_id INT(5) NOT NULL,
staff_first_name VARCHAR(20) NOT NULL,
staff_last_name VARCHAR(20) NOT NULL,
staff_phone_number VARCHAR(15) NOT NULL,
staff_email_address VARCHAR(30) NOT NULL,
Foregn_Key int,
CONSTRAINT staff_id_pk PRIMARY KEY (staff_id),
CONSTRAINT staff_id_fk FOREIGN KEY (Foregn_Key)
REFERENCES computer_staff (Foregn_Key)
);
0 голосов
/ 04 июля 2018

Вам не хватает запятой:

CREATE TABLE IF NOT EXISTS staff (
    staff_id INT(5) NOT NULL,
    staff_first_name VARCHAR(20) NOT NULL,
    staff_last_name VARCHAR(20) NOT NULL,
    staff_phone_number VARCHAR(15) NOT NULL,
    staff_email_address VARCHAR(30) NOT NULL,
    CONSTRAINT staff_id_pk PRIMARY KEY (staff_id), -- here
    CONSTRAINT staff_id_fk FOREIGN KEY (staff_id)
    REFERENCES computer_staff (staff_id)
);
...