mysql не показывает ошибку, если родительский идентификатор отсутствует в дочерней таблице для ограничения внешнего ключа

#mysql

#mysql

Вопрос:

Я создал 2 таблицы employees в качестве родительской таблицы и departments в качестве дочерней таблицы, а в таблице departments employee_id создается внешний ключ, но если я попытаюсь сначала вставить данные в дочернюю таблицу без вставки записи в родительскую таблицу, тогда данные будут вставлены успешно, однако я хочу, чтобы появилась ошибка, потому что без идентификатора родительской таблицызапишите, что мы должны вставить дочерние данные, поскольку здесь мы поддерживаем ссылочные ограничения внешнего ключа

Запросы Mysql:

родительская таблица

 CREATE TABLE employees
( employee_id numeric (20) not null,
employee_name varchar(75) not null,
supervisor_name varchar(75),
CONSTRAINT employee_pk PRIMARY KEY (employee_id)
);
 

Дочерняя таблица

 CREATE TABLE departments
( department_id numeric (20) not null,
employee_id numeric (20) not null,
CONSTRAINT fk_employee
FOREIGN KEY (employee_id)
REFERENCES employee (employee_id)
);
 

Комментарии:

1. Это таблицы MyISAM? MyISAM не поддерживает и не применяет ограничения внешнего ключа. Вы должны использовать InnoDB.

2. @Bill Karwin Я использую InnoDB

Ответ №1:

Проблема в самом имени.Имя таблицы — employees, тогда как в части ссылок оно указано как employee . Здесь также должны быть сотрудники.

 CREATE TABLE departments
( department_id numeric (20) not null,
employee_id numeric (20) not null,
CONSTRAINT fk_employee
FOREIGN KEY (employee_id)
REFERENCES employees (employee_id)
);
 

Комментарии:

1. спасибо, не могли бы вы рассказать мне, как увидеть это созданное постоянное имя с помощью запроса