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:引用列数必须与引用列匹配
我真的不明白如何解决此错误,任何帮助将不胜感激。谢谢。
你误解了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)
);
这是您遇到错误的部分:
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)