У меня есть таблица, которая ссылается на бронирование и продукт, но я не могу добавить внешний ключ.
Вот таблица:
CREATE TABLE IF NOT EXISTS `resa_product` (
`id_reservation` int(10) NOT NULL,
`id_business` int(10) NOT NULL,
`id_category` int(10) NOT NULL,
`id_product` int(10) NOT NULL,
`quantity` int(11) NOT NULL,
PRIMARY KEY (`id_reservation`,`id_business`,`id_category`,`id_product`),
KEY `resa_prod_index` (`id_business`,`id_category`,`id_product`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Таблица продуктов:
CREATE TABLE IF NOT EXISTS `product` (
`id_business` int(10) NOT NULL,
`id_product` int(10) NOT NULL AUTO_INCREMENT,
`id_category` int(10) NOT NULL,
`nom` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
...
PRIMARY KEY (`id_product`,`id_category`,`id_business`),
KEY `id_category` (`id_category`),
KEY `id_business` (`id_business`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;
но когда я пытаюсь это сделать, я получаю errno 150 от mySQL:
ALTER TABLE `resa_product`
ADD FOREIGN KEY (`id_business`, `id_category`, `id_product`)
REFERENCES `product`(`id_business, `id_category`, `id_product`)
ON UPDATE CASCADE
ON DELETE RESTRICT;
Я не понимаю, почему я не могу вставить этот составной ключ, хотя я добавил индекс. У кого-нибудь есть идея?
спасибо за вашу помощь