【问题标题】:error message "ORA-02270: no matching unique or primary key for this column-list"错误消息“ORA-02270:此列列表没有匹配的唯一键或主键”
【发布时间】:2014-05-15 15:59:07
【问题描述】:

我在将事物映射到单独的数据表时遇到问题。将有 DEPARTMENT_LOCATIONS、DEPARTMENT、EMPLOYEE 和 PROJECT 表。 到目前为止,所有表都是在 PROJECT 之外创建的,因为我收到了我的问题标题的错误消息。

以下是我用来创建没有错误的表的信息:

员工表:

CREATE TABLE EMPLOYEE
(FNAME VARCHAR(25) NOT NULL,
MINIT CHAR(1),
LNAME VARCHAR(25) NOT NULL,
SSN NUMBER(10) NOT NULL,
BDATE DATE NOT NULL,
ADDRESS VARCHAR(30) NOT NULL,
SEX CHAR(1) NOT NULL,
SALARY DECIMAL(6,2) NOT NULL,
SUPERSSN NUMBER(10),
DNO NUMBER (1) NOT NULL,
PRIMARY KEY (SSN),
FOREIGN KEY (DNO) REFERENCES DEPT_LOCATIONS(DNUMBER));

DEPARTMENT_LOCATIONS 表:

CREATE TABLE DEPT_LOCATIONS
(DNUMBER NUMBER(1) NOT NULL,
DLOCATION VARCHAR(25) NOT NULL,
PRIMARY KEY (DNUMBER));

部门表:

CREATE TABLE DEPARTMENT
(DNUMBER NUMBER(1) NOT NULL,
DNAME VARCHAR(25) NOT NULL,
MGRSTARTDATE DATE NOT NULL,
MGRSSN NUMBER(10) NOT NULL,
PRIMARY KEY (DNUMBER),
FOREIGN KEY (DNUMBER) REFERENCES DEPT_LOCATIONS(DNUMBER),
FOREIGN KEY (MGRSSN) REFERENCES EMPLOYEE(SSN));

现在,当我为 PROJECT 表输入以下信息时,我收到错误消息“ORA-02270:此列列表没有匹配的唯一键或主键。)

CREATE TABLE PROJECT
(PNUMBER NUMBER(2,1) NOT NULL PRIMARY KEY,
PNAME VARCHAR(25) NOT NULL,
PLOCATION VARCHAR(25) NOT NULL,
DNUM NUMBER(1) NOT NULL,
FOREIGN KEY (PLOCATION) REFERENCES DEPT_LOCATIONS(DLOCATION),
FOREIGN KEY (DNUM) REFERENCES DEPT_LOCATIONS(DNUMBER));

为什么会出现这个错误,我需要做些什么来纠正它?谢谢你。

【问题讨论】:

    标签: mysql oracle datatable primary-key foreign-key-relationship


    【解决方案1】:

    您必须将 dlocation 声明为唯一的,以便在另一个表中引用它。

    CREATE TABLE DEPT_LOCATIONS
    (DNUMBER NUMBER(1) NOT NULL,
    DLOCATION VARCHAR(25) UNIQUE,
    PRIMARY KEY (DNUMBER));
    

    【讨论】:

    • 通过声明它是唯一的,这是否允许我通过它的编号引用任何部门位置?它会限制我在同一地点拥有多个部门编号吗?
    • 您已经在 DNUMBER 上拥有主键,您可以使用此主键引用任何 dept_location。声明 DLOCATION 唯一可确保 DLOCATION 列中不会有任何重复值,但 null 除外,并且该列可以用作另一个表中的外键引用。
    猜你喜欢
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-15
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多