@Qixing

Как добавить внешний ключ в таблицу на колонку с null с уже существующими записями?

Добрый день. Есть таблица бренды(brand) и товары(item). В товарах есть колонка brand, которым я хочу сделать внешний ключ на brand.id. Но поле item.brand может и быть null. В таблице уже есть записи. Там где нет связей brand=null.

ALTER TABLE  `item` ADD FOREIGN KEY (  `brand` ) REFERENCES  `imstor`.`brand` (

`id`
) ON DELETE RESTRICT ON UPDATE RESTRICT ;

Ответ MySQL: Документация

#1215 - Cannot add foreign key constraint

CREATE TABLE IF NOT EXISTS `brand` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`category` int(10) NOT NULL,
`url` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `category_id` (`category`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=22 ;

-- --------------------------------------------------------

--
-- Структура таблицы `item`
--

CREATE TABLE IF NOT EXISTS `item` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`category` int(10) NOT NULL,
`url` varchar(255) NOT NULL,
`brand` int(10) DEFAULT NULL,
`name` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `category_id` (`category`),
KEY `brand` (`brand`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=420 ;

ALTER TABLE `brand`
ADD CONSTRAINT `brand_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`id`);

ALTER TABLE `item`
ADD CONSTRAINT `item_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`id`);
  • Вопрос задан
  • 4139 просмотров
Решения вопроса 1
Vinatorul
@Vinatorul
Developer
Попробуйте вот так
ALTER TABLE  `item` ADD CONSTRAINT 'fk_brand_id' FOREIGN KEY (`brand`) REFERENCES  `imstor`.`brand`(`id`) 
ON DELETE RESTRICT ON UPDATE RESTRICT;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@zhogar
скорее всего is null а не равно, хотя могу ошибаться.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы