0
您好我有3个属性作为主键 产品的表: PRIMARY KEY(product_name
,category
,product_type
)。MySQL的复合外键引用超过2个属性
现在我在另一个表引用此复合主键
ORDER_DETAILS: 外键(PRODUCT_NAME,产品类型,类别)引用的产品(PRODUCT_NAME,产品类型,类别)
但是我得到一个错误在控制台说遗漏括号,我无法添加外键。但是,如果我只在参考中添加2个列名(例如:“外键(product_name,product_type,category)引用产品(product_name,product_type) ”),则查询不会发生错误。
请帮我解决这个问题。请在下面找到
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) );
我试过了。但仍然无法正常工作:( – user2552729 2015-04-04 07:11:07
@ user2552729仔细检查,确实有效,这是[小提琴](http://sqlfiddle.com/#!9/2ea3c)。 – saaj 2015-04-06 09:38:32