gpt4 book ai didi

mysql - mySQL 的外键

转载 作者:行者123 更新时间:2023-11-29 09:06:31 25 4
gpt4 key购买 nike

我有一个引用预订和产品的表,但无法添加任何外键。

这是表格:

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 得到 errno 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;

我不明白为什么我无法插入这个组合键,尽管我添加了索引。有人有想法吗?

感谢您的帮助

最佳答案

在产品表中

  • 3 列的数据类型和排序规则必须匹配
  • 3 列上必须有唯一约束或索引,且顺序与 FK 相同

编辑:问题更新后。

将外键更改为此,以使列顺序与产品的 PK 对齐

ALTER TABLE `resa_product`
ADD FOREIGN KEY (`id_product`, `id_category`, `id_business`)
REFERENCES `product`(`id_product, `id_category`, `id_business`)
ON UPDATE CASCADE
ON DELETE RESTRICT;

但是,这 3 栏在整个节目中以不同的顺序出现。我会修复这个以保持个人一致......

关于mysql - mySQL 的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6895925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com