Я просматриваю 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)
);
Может ли кто-нибудь увидеть, что я сделал неправильно здесь?
РЕДАКТИРОВАТЬ:
Ошибка, с которой я получаю отчеты:
19:35:55 CONSTRAINT staff_id_fk FOREIGN KEY (staff_id), ССЫЛКИ computer_staff (staff_id)) Код ошибки: 1064. У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с CONSTRAINT staff_id_fk FOREIGN KEY (staff_id), ССЫЛКИ computer_staff (staff_ 'в строке 1 0.00025 sec
UPDATE: Код ошибки: 1215. Невозможно добавить ограничение внешнего ключа 0.110 сек.
Как разрешить код ошибки 1215?
Попробуйте этот код
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)
);
Вам не хватает запятой:
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)
);
computer_staff
уже создана / присутствует в базе данных, прежде чем добавлять внешние ключи, ссылающиеся на эту таблицу