MySQL не работает внешний ключ

391
29 августа 2017, 11:02

Здравствуйте! Проблема такая: создал 2 таблицы - "Группа" и "Студент". Связал их по полю группы. При добавлении данных не проверяется целостность, т. е. можно добавить студента в группу, которой нет в таблице "Группа" SQL код таблиц

CREATE TABLE `gruppa` (

`grup_num` int(11) NOT NULL AUTO_INCREMENT,
  `spec` varchar(70) DEFAULT NULL,
  `curator` varchar(70) DEFAULT NULL,
  PRIMARY KEY (`grup_num`)
) ENGINE=MyISAM
CREATE TABLE `student`(
`id` int auto_increment not null,
`FIO` varchar(70) DEFAULT NULL,
`num_gruppa` INT NOT NULL,
primary key(`id`),
foreign key (`num_gruppa`) references gruppa(`grup_num`)
ON UPDATE RESTRICT
ON DELETE RESTRICT
)
ENGINE = MyISAM

В чем может быть проблема?

Пример запроса:

INSERT INTO student VALUES ('1','1','1')

Таблица с группами - пустая

Answer 1

Оказалось, что проверки внешних ключей были тупо выключены:

mysql> SELECT @@FOREIGN_KEY_CHECKS;
+----------------------+
| @@FOREIGN_KEY_CHECKS |
+----------------------+
|                    0 |
+----------------------+
1 row in set (0.00 sec)

...и их надо попросту включить (в рамках сессии):

SET FOREIGN_KEY_CHECKS=1;

...возможно даже глобально, если это ваш сервер БД и вы удивлены, что он так настроен:

SET GLOBAL FOREIGN_KEY_CHECKS=1;
READ ALSO
Как получить медиану в mysql

Как получить медиану в mysql

Есть таблица test, в неё автоматически заполняются значение id, speed, как получить медиану значения speed в mysql

370
Что такое ожидание блокировки в Java?

Что такое ожидание блокировки в Java?

Добрый деньИзучаю сейчас потоки исполнения в Java

405
Почему static main()?

Почему static main()?

Почему метод main() должен быть статичным?

258
Разница между методом и функцией

Разница между методом и функцией

Есть ли разница между методом и функцией? Или это просто два разных названия одного и того же?

372