予約と製品を参照するテーブルがありますが、外部キーを追加することはできません。ここでmySQLの外部キー
はテーブルです:
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 ;
が、私はこれをしようとすると、私は、MySQLからエラー番号150を取得する:
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;
Iドン私はインデックスを追加しましたが、この合成キーを挿入できない理由を理解していません。誰かがアイデアを持っていますか?
商品表はどのようなものですか? – gbn
'product'テーブルはどのように見えますか? –