gpt4 book ai didi

mysql复合外键引用超过2个属性

转载 作者:行者123 更新时间:2023-11-29 22:40:48 25 4
gpt4 key购买 nike

嗨,我有一个包含 3 个属性作为主键的表产品:主键(产品名称类别产品类型)。

现在我在另一个表中引用这个复合主键

订单详情:外键(产品名称,产品类型,类别)引用产品(产品名称,产品类型,类别)

但是我在控制台中收到错误消息,提示缺少括号,并且我无法添加外键。但是,如果我在引用中仅添加 2 个列名称(例如:“外键(产品名称,产品类型,类别)引用产品(产品名称,产品类型)") 查询没有给出错误。

请帮我解决这个问题。请在下面找到我的代码

CREATE TABLE `products` (  `product_name` varchar(45) NOT NULL,  `product_type` varchar(45) NOT NULL,  `category` varchar(45) NOT NULL,  `product_desc` varchar(150) DEFAULT NULL,    `unit_price` int(11) NOT NULL,  `supplier_id` int(11) NOT NULL,  `units_in_stock` int(11) NOT NULL,  PRIMARY KEY (`product_name`,`category`,`product_type`),  INDEX (product_name,category,product_type),  CONSTRAINT `supplier_prod_table_fkey` FOREIGN KEY (`supplier_id`) REFERENCES   `supplier` (`supplier_id`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE=INNODB;CREATE TABLE `order_details` (  `order_id` int(11) NOT NULL AUTO_INCREMENT,  `product_name` varchar(45) NOT NULL,  `product_type` varchar(45) NOT NULL,  `category` varchar(45) NOT NULL,  `quantity` int(11) DEFAULT NULL,  CONSTRAINT `orderid_fkey` FOREIGN KEY (`order_id`) REFERENCES `orders`  (`order_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,  PRIMARY KEY (`order_id`,`product_name`,`product_type`,`category`),  INDEX (product_name,product_type,category),  foreign key(product_name,product_type,category) references products(product_name,product_type,category));

最佳答案

REFERENCES 和相应索引中的字段在两个表中的顺序必须相同,即 (product_name,category,product_type)

CREATE TABLE `order_details` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
`product_name` varchar(45) NOT NULL,
`product_type` varchar(45) NOT NULL,
`category` varchar(45) NOT NULL,
`quantity` int(11) DEFAULT NULL,
CONSTRAINT `orderid_fkey` FOREIGN KEY (`order_id`) REFERENCES `orders`
(`order_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
PRIMARY KEY (`order_id`,`product_name`,`product_type`,`category`),
INDEX (product_name,category,product_type),
FOREIGN KEY(product_name,category,product_type) REFERENCES products(product_name,category,product_type)

);

关于mysql复合外键引用超过2个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360579/

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