应用所有我读过的关于错误 02270 的内容后仍然出现错误

Still Getting Errors After Applying All I've Read About the Error 02270

我正在为一项作业创建几个 Table。

所以我创建了一个 Gardener Table 和一个 Offering Table,具有所有适当的数据类型和 NULL 状态,以及主键约束每个。在 Gardener table 中,我包含了 offeringID,反之亦然。

当我尝试将外键约束 offeringID 添加到 Gardener Table 时出现错误。

在网上查了一下,我发现我忘了让 offeringIDgardenerID 在彼此的 table 中是唯一的,因此我修改了 table 以增加唯一性。

尝试添加外键约束,我得到了同样的错误。我想我可能理解错了,但我似乎无法理解它。

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 指向它应该不是问题吗?

由于您尝试为 Gardener table 中的 offering.offeringID 列添加外键约束,而当您尝试时该列没有 unique/primary key 键添加外键。即操作在第 3 个命令处停止。

因此,只需将命令的顺序交换为:

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);

Demo