create table Supplier(
SuppId number(5),
SuppName VARCHAR2(15),
Suppaddress VARCHAR2(50),
SuppCity VARCHAR(15),
Supppostcode number(4),
SuppPhone VARCHAR(15),
CONSTRAINT pk_supplier PRIMARY KEY (SuppId)
);
create table Item(
ItemId number(5),
Itemname VARCHAR2(15),
Size1 VARCHAR2(4),
Color VARCHAR2(10),
price number(4),
numstock number(3),
CONSTRAINT pk_item PRIMARY KEY (ItemId)
);
create table Supplier_Item(
suppquantity number(3),
SuppId number(5),
ItemId number(5),
CONSTRAINT pk_supplier_item PRIMARY KEY (SuppId, ItemId),
CONSTRAINT fk_supplier_item FOREIGN KEY (SuppId, ItemId)
REFERENCES Supplier(SuppId)
References Item(ItemId)
);
这是我得到的错误。
ORA-02256:引用列的数量必须与引用的列匹配
我真的不明白如何修复此错误,任何帮助都将不胜感激。 感谢。
答案 0 :(得分:3)
您误解了foreign key
子句的工作原理。
您需要自己指定每个FK约束。你不能将它们合二为一:
create table Supplier_Item
(
suppquantity number(3),
suppid number(5),
itemid number(5),
CONSTRAINT pk_supplier_item PRIMARY KEY (suppid, itemid),
FOREIGN KEY (suppid) references supplier (suppid),
foreign key (itemid) references item (itemid)
);
或者如果你想给两个FK命名:
create table Supplier_Item
(
suppquantity number(3),
suppid number(5),
itemid number(5),
CONSTRAINT pk_supplier_item PRIMARY KEY (suppid, itemid),
constraint fk_supp_item2supplier foreign key (suppid) references supplier(suppid),
constraint fk_supp_item2item foreign key (itemid) references item (itemid)
);
答案 1 :(得分:1)
这是您遇到错误的部分:
CONSTRAINT fk_supplier_item FOREIGN KEY (SuppId, ItemId)
REFERENCES Supplier(SuppId)
References Item(ItemId)
您需要创建单独的外键,如下所示:
CONSTRAINT fk_supplier_item_supplier FOREIGN KEY (SuppId) REFERENCES Supplier(SuppId),
CONSTRAINT fk_supplier_item_item FOREIGN KEY(ItemId) References Item(ItemId)