Oracle (ORA-02270):该列列表没有匹配的唯一键或主键
Posted
技术标签:
【中文标题】Oracle (ORA-02270):该列列表没有匹配的唯一键或主键【英文标题】:Oracle (ORA-02270) : no matching unique or primary key for that column list 【发布时间】:2021-11-28 22:20:11 【问题描述】:我有两张桌子:
CREATE TABLE Trasy_srodki_transportu(
ID_Trasy Integer NOT NULL,
ID_pojazdu Integer NOT NULL
)
/
CREATE TABLE Trasy(
ID_Trasy Integer NOT NULL,
Linia Varchar2(4 ) NOT NULL,
Data_rozpoczecia_kursowania Date NOT NULL,
Data_zakonczenia_kursowania Date,
ID_Pracownika Integer NOT NULL
)
现在我想将外键添加到 Trasy_srodki_transportu 引用 Trasy 表:
ALTER TABLE Trasy_srodki_transportu ADD CONSTRAINT Trasa_jest_wykorzystywana FOREIGN KEY (ID_Trasy) REFERENCES Trasy (ID_Trasy)
/
这会引发 Oracle (ORA-02270) : no matching unique key or primary key for this column-list 错误。有什么建议可以解决这个问题吗?Data modeler view
【问题讨论】:
外键强制所有值都存在于引用的表中。你检查过这一点吗? any of the existing questions discussing this same error 对你有帮助吗? 【参考方案1】:外键需要引用相关表上的键,但在您的示例中并非如此。通过在其中添加PRIMARY KEY
约束来更改第二个表的定义,如下所示:
CREATE TABLE Trasy (
ID_Trasy Integer PRIMARY KEY NOT NULL,
Linia Varchar2(4 ) NOT NULL,
Data_rozpoczecia_kursowania Date NOT NULL,
Data_zakonczenia_kursowania Date,
ID_Pracownika Integer NOT NULL
)
或者,您可以在其上创建一个唯一约束,该约束也可以用作键。例如:
CREATE TABLE Trasy (
ID_Trasy Integer NOT NULL,
Linia Varchar2(4 ) NOT NULL,
Data_rozpoczecia_kursowania Date NOT NULL,
Data_zakonczenia_kursowania Date,
ID_Pracownika Integer NOT NULL,
CONSTRAINT uq_idtrasy UNIQUE (ID_Trasy)
)
【讨论】:
以上是关于Oracle (ORA-02270):该列列表没有匹配的唯一键或主键的主要内容,如果未能解决你的问题,请参考以下文章
SQL : ORA-02270: 此列列表没有匹配的唯一键或主键
如何修复 sql 中的“ORA-02270:此列列表没有匹配的唯一键或主键”错误