复合外键不起作用

时间:2015-08-11 05:06:05

标签: sql oracle composite-primary-key

我有一个带有复合主键的产品表,并且复合主键的工作正常,但每当我尝试将此复合主键用作另一个表中的外键时,它就会起作用

主要表格产品:

create table product
(
product_id number(4) , 
sub_product_id number(3) , 
category_id references category, 
product_name varchar2(40), 
product_brand varchar2(30), 
price varchar2(15) , 
image_url varchar2(200) , 
color varchar2(30) , 
intmemory varchar2(30) ,
extmemory varchar2(30) , 
primary key(product_id,sub_product_id)
)

外键表购物车:

create table cart
(
userid references register1 ,
product_id, 
sub_product_id, 
quantity number(3) , 
delivery_time varchar2(100) ,
foreign key(product_id ,sub_product_id) references product(product_id    ,sub_product_id)
)

主表工作正常,但外键不起作用,当我插入相同的(product_id , sub_product_id)

时,它们不会出错

我想要的是购物车表格不会有相同product_id, sub_product_id的多个条目

1 个答案:

答案 0 :(得分:1)

作为Jens mentioned,外键与唯一键不同。您可以简单地创建一个唯一的密钥:

ALTER TABLE cart
ADD CONSTRAINT constraint_name
UNIQUE (product_id , sub_product_id);