我正在为任务创建几个表格。
因此,我创建了一个Gardener
表和一个Offering
表,其中包含所有适当的数据类型和NULL状态,以及每个表的主键约束。在Gardener
表中,我包含了offeringID
,反之亦然。
当我尝试将外键约束offeringID
添加到Gardener
表时,出现错误。
在线检查后,我意识到我忘记让彼此的表中的offeringID
和gardenerID
成为唯一表,因此我更改了表以增加唯一性。
尝试添加外键约束,但出现相同的错误。我认为我可能在理解错误的地方,但是我似乎无法将手指放在上面。
Create Table Gardener
(gardenerID NUMBER(10) NOT NULL,
offeringID NUMBER(10) NOT NULL,
CONSTRAINT gardener_pk PRIMARY KEY(gardenerID)
);
Create Table Offering
(offeringID NUMBER(10) NOT NULL,
gardenerID NUMBER(10) NOT NULL,
CONSTRAINT offering_pk PRIMARY KEY(offeringID)
);
Alter Table Gardener
add CONSTRAINT offering_fk FOREIGN KEY(offeringID)
REFERENCES Offering(offeringID);
Alter Table Gardener
add Unique(offeringID);
Alter Table Offering
add Unique(gardenerID);
这是错误:
ORA-02270: no matching unique or primary key for this column-list
02270. 00000 - "no matching unique or primary key for this column-list"
Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement gives a column-list
for which there is no matching unique or primary key constraint in the referenced table.
就像,我还是不明白。 offeringID
是否不是主键,因此从Gardener
指向它还是不是一个问题?
答案 0 :(得分:1)
由于您正在尝试为offering.offeringID
表中的Gardener
列添加外键约束,而当您尝试添加外键时该列没有unique/primary key
键。也就是说,操作会在第三个命令处停止。
因此,只需将命令顺序交换为:
Alter Table Gardener
add Unique(offeringID); -- should be prior to the below command
Alter Table Gardener
add CONSTRAINT offering_fk FOREIGN KEY(offeringID)
REFERENCES Offering(offeringID);