SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.05.2010 15:43:12

rudserg
Участник
Зарегистрирован: 24.05.2010
Сообщений: 4

Связь двух таблиц один ко многим

Есть база it-control, в ней 2 таблицы pos - описание единиц техники (комп, монитор, принтер и т.д.) и workset - описание рабочих мест

Надо привязать единицы комп. техники к рабочим местам, т.е. рабочее место номер 1 в таблице мест включает комп номер 1, монитор номер 2, принтер номер 3  в таблице позиций

в таблице pos есть поле idworkset и я его хочу привязать к полю id в таблице workset

Делаю это через MySQL Administrator из комплекта MySQL GUI Tools, эта прога генерит следующую команду:

ALTER TABLE `it-control`.`pos`
ADD CONSTRAINT `FK_pos_1`
FOREIGN KEY `FK_pos_1` (`idworkset`)
REFERENCES `workset` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;

Сравнивал ее с описанием связи таблиц через внешние ключи из FAQ, вроде команда правильная, но в ответ на нее MySQL ругается:

ERROR 1005 (HY000): Can't create table 'it-control.#sql-620_5' (errno: 150)

в чем я ошибся?

Отредактированно rudserg (24.05.2010 15:46:29)

Неактивен

 

#2 24.05.2010 17:32:57

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Связь двух таблиц один ко многим

Для того, чтобы создался внешний ключ, нужно, чтобы были обычные ключи на
соответствующих столбцах таблиц. Ну и обе таблицы, разумеется, должны быть
InnoDB.

Неактивен

 

#3 25.05.2010 15:59:34

rudserg
Участник
Зарегистрирован: 24.05.2010
Сообщений: 4

Re: Связь двух таблиц один ко многим

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson