Oracle-此列列表没有匹配的唯一键或主键

时间:2018-11-01 19:43:12

标签: sql oracle foreign-keys primary-key

好的,如果我的代码不是最佳格式,请抱歉。尝试创建第二张表时出现错误。我收到此错误:ORA-02270:此列列表没有匹配的唯一键或主键。我读过其他文章,但对外键出了什么问题感到困惑。 E_T中的外键是D_ID和SP_ID。 D_id引用表d_t,SP_ID引用表e_t,因为它是a,它与E_ID是一元关系。我相信这是员工ID和主管ID。 FK和PK数据类型匹配。

CREATE TABLE  D_T
(
     D_ID   INTEGER NOT NULL,
     D_Name VARCHAR(45),

     CONSTRAINT D_T_PK PRIMARY KEY (D_ID)
);

CREATE TABLE E_T
(
     E_ID   INTEGER NOT NULL,
     E_Name VARCHAR(45),
     D_ID   INTEGER,
     Salary INTEGER,
     SP_ID  INTEGER,

     CONSTRAINT E_T_PK PRIMARY KEY (E_ID),
     CONSTRAINT E_T_FK1 FOREIGN KEY (D_ID) REFERENCES D_T(D_ID),
     CONSTRAINT E_T_FK2 FOREIGN KEY (SP_ID) REFERENCES E_T(SP_ID)
);

我想指出,在Oracle服务器上-脚本的第13和14行,单词“ KEY”不是蓝色。我不确定这是否重要。

1 个答案:

答案 0 :(得分:2)

您为自引用引用了错误的列。所以第二张表应该更像:

CREATE TABLE E_T (
 E_ID    INTEGER NOT NULL PRIMARY KEY,
 E_Name    VARCHAR(45),
 D_ID    INTEGER,
 Salary    INTEGER,
 SP_ID    INTEGER,
 CONSTRAINT E_T_FK1 FOREIGN KEY (D_ID) REFERENCES D_T(D_ID),
 CONSTRAINT E_T_FK2 FOREIGN KEY (SP_ID) REFERENCES E_T(E_ID)
-------------------------------------------------------^
)