首页 > 解决方案 > 不匹配,检查了很多次

问题描述

谷歌搜索了很多错误,但我似乎无法找到解决方案。这些是我的代码

create table valuation (   
    propertyNum VARCHAR2(255), 
    dateInspected DATE, 
    rent VARCHAR2(255),
    deposit VARCHAR2(255),
    PRIMARY KEY (propertyNum, dateInspected),
    FOREIGN KEY (propertyNum) REFERENCES property,
    FOREIGN KEY (dateInspected) REFERENCES inspection
);

create table inspection (   
    propertyNum VARCHAR2(255), 
    dateInspected DATE, 
    staffNum VARCHAR2(255),
    comments CHAR(255), 
    PRIMARY KEY (propertyNum, dateInspected),
    FOREIGN KEY (propertyNum) REFERENCES property,
    FOREIGN KEY (staffNum) REFERENCES staff
);

错误似乎在这部分:

FOREIGN KEY (dateInspected) REFERENCES inspection);

因为我已经尝试删除这部分并且它工作正常。

错误信息:

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

标签: sqloracle

解决方案


这不起作用,因为您试图从“评估”表中定义的外键仅基于一列(“dateInspected”),而父/主表的主键(“检查”)确实没有单列主(或唯一)键。它有一个两列(在“propertyNum”和“dateInspected”列上)

创建外键的要求是主/父表具有匹配的主键或匹配的唯一约束。

你可能想要的是这样的:

FOREIGN KEY (propertyNum, dateInspected) REFERENCES inspection

推荐阅读