在一元关系中定义外键

时间:2016-04-04 03:42:08

标签: sql oracle foreign-keys

我有表格分配,应该有两个FK - ManagerID& ManagerProjID

CREATE TABLE Assignment
    (
        RescID NUMBER (8) NOT NULL ,
        RProjID NUMBER (4) NOT NULL ,
        AssignRole VARCHAR2(100) ,
        ManagerID NUMBER (8) ,
        ManagerProjID NUMBER (4),
        CONSTRAINT Assignment_PK PRIMARY KEY ( RescID, RProjID)


    )
;

当我尝试运行命令

ALTER TABLE Assignment
    ADD CONSTRAINT Assignment_Manager_FK FOREIGN KEY
    ( MANAGERID )
    REFERENCES Assignment
    ( MANAGERID )
;

我收到的错误是此列列表没有匹配的唯一键或主键。

3 个答案:

答案 0 :(得分:1)

您的查询未实现您的问题标题所述的内容。它试图自我引用列ManagerID

对于不是foreign keyprimary key的列,您不能拥有unique key引用,因为无法强制引用列的唯一性。 ManagerProjID是一个非唯一列,因此您无法在其上创建foriegn密钥引用。

答案 1 :(得分:1)

Foreign key无法引用自身。它只能引用PrimaryKey

答案 2 :(得分:1)

将主键添加到表中,并将主键引用到外键。