Задавайте вопросы, мы ответим
Вы не зашли.
Есть база 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)
Неактивен
Для того, чтобы создался внешний ключ, нужно, чтобы были обычные ключи на
соответствующих столбцах таблиц. Ну и обе таблицы, разумеется, должны быть
InnoDB.
Неактивен
разобрался в чем была проблема, поле idworkset не имело ключевое слово unsignet, т.е. значение в нем могло быть отрицательным, поэтому ключ и не создавался
Неактивен