ORA-02270引用外键

时间:2014-04-17 04:20:55

标签: sql foreign-keys sqlplus

我有第一张表

CREATE TABLE HEAD (
Code int, 
Name varchar(99),
HType char(1),
HDate date, 
OpBal number(10),

CONSTRAINT pk_head PRIMARY KEY (Code, Name));

第二个表格

CREATE TABLE SUBHEAD (
    HCode int,
    SubCode int,
    Name varchar(99),
    SDate date, 
    OpBal number(10),

    CONSTRAINT fk_subhead FOREIGN KEY (HCode) REFERENCES HEAD(Code),
    CONSTRAINT pk_subhead PRIMARY KEY (Hcode, SubCode));

现在,当我运行脚本时,我得到:

  

CONSTRAINT fk_subhead FOREIGN KEY(HCode)REFERENCES HEAD(Code),

     

第7行的错误:

     

ORA-02256:引用列的数量必须与引用的列匹配

我一直在环顾四周试图弄清楚错误是什么,我认为它与父表约束有关,但我完全不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

您的问题是您的外键未引用HEAD中的整个主键。

因此您需要更改外键(在其中包含名称)或更改HEAD的主键以在那里排除名称。

所以要么改变

CONSTRAINT pk_head PRIMARY KEY (Code, Name));

CONSTRAINT pk_head PRIMARY KEY (Code));

或更改

CONSTRAINT fk_subhead FOREIGN KEY (HCode) REFERENCES HEAD(Code)

CONSTRAINT fk_subhead FOREIGN KEY (HCode, Name) REFERENCES HEAD(Code, Name)