Здравствуйте! Проблема такая: создал 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')
Таблица с группами - пустая
Оказалось, что проверки внешних ключей были тупо выключены:
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;
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть таблица test, в неё автоматически заполняются значение id, speed, как получить медиану значения speed в mysql
Есть ли разница между методом и функцией? Или это просто два разных названия одного и того же?