rpsv
@rpsv
делай либо хорошо, либо никак

Почему не устанавливаются связи между таблицами?

Здрасте! Столкнулся с непонятной проблемой:

Имеются 2 таблицы:

Страны:
Код создания таблицы
CREATE TABLE `countrys` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`name` VARCHAR(50) NOT NULL,
	PRIMARY KEY (`id`)
)
ENGINE=InnoDB;

Города:
Код создания таблицы
CREATE TABLE `citys` (
	`id` INT(11) NOT NULL AUTO_INCREMENT,
	`id_country` INT(11) NOT NULL,
	`name` VARCHAR(50) NOT NULL,
	PRIMARY KEY (`id`),
	INDEX `FK__countrys` (`id_country`),
	CONSTRAINT `FK__countrys` FOREIGN KEY (`id_country`) REFERENCES `countrys` (`id`)
)
COLLATE='cp1251_general_ci'
ENGINE=InnoDB;

Связь:
countrys.id = citys.id_country

Но вот забавно то, что я могу спокойной добавить строку в таблицу "Города" указав рандомный ID страны (при чем таблица Countrys вообще пустая:

INSERT INTO `citys` (id_country, name) VALUES (666, 'Курган');


Подскажите в чем проблема... (даже в phpMyAdmin установил связи, все равно не помогает)

СУБД: mySQL
  • Вопрос задан
  • 4703 просмотра
Решения вопроса 1
difiso
@difiso
В параллельной вселенной я космонавт
Все работает.
Ваши скрипты создали таблицы, но запрос
INSERT INTO `citys` (id_country, name) VALUES (666, 'Курган');

логично вызвал ошибку
#1452 - Cannot add or update a child row: a foreign key constraint fails (`test`.`citys`, CONSTRAINT `FK__countrys` FOREIGN KEY (`id_country`) REFERENCES `countrys` (`id`))

Что по-русски в данном контексте "Сначала добавь страну с номером 666".

И да. Множественное число.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
[offtop]
Множественное число слов city и country: cities и countries
[/offtop]
Ответ написан
Комментировать
shcherbanich
@shcherbanich
Программист
Таблицы связываются логически, записи просто так автоматом появляться не будут, если я вообще правильно понял вопрос...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы