我有第一张表:
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:引用列的数量必须与引用的列匹配
我一直在环顾四周试图弄清楚错误是什么,我认为它与父表约束有关,但我完全不知道如何解决这个问题。
答案 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)