如何修复 sqlplus 中此列列表错误没有匹配的唯一键或主键?

How to fix no matching unique or primary key for this column-list error in sqlplus?

我正在尝试编写这段代码。

    create table pat_entry (
    pat_no number,
    pat_name varchar2(20),
    pat_sex char(2) CHECK(pat_sex IN ('M', 'm', 'F', 'f') ) NOT NULL,
    pat_age number(3) NOT NULL,
    pat_address varchar2(100) NOT NULL,
    pat_ph_no number(15) NOT NULL,
    pat_entry_date date NOT NULL,
    doc_name varchar(2) NOT NULL,
    diagnosis varchar2(20),
    d_name varchar2(20) NOT NULL,
    constraint pk_patEntry_no primary key(pat_no),
    constraint uk_patEntry_name UNIQUE(pat_name, diagnosis)
    );

    Table created.

    create table pat_chkup (
    pat_no number,
    oc_no varchar2(20) NOT NULL,
    date_of_chkup date NOT NULL,
    diagnosis varchar2(20) NOT NULL,
    treatment varchar2(20) NOT NULL,
    status varchar2(16) CHECK(status IN ('admitted', 'operation', 'regular patient') ) NOT NULL,
    constraint pk_patChkup_no primary key(pat_no),
    constraint uk_patChkup_treatment UNIQUE(treatment),
    foreign key(pat_no, diagnosis) REFERENCES pat_entry(pat_no, diagnosis)
    );
    foreign key(pat_no, diagnosis) REFERENCES pat_entry(pat_no, diagnosis),
                                                        *

我确实将 pat_no 添加为主键并将诊断添加为唯一键,但它告诉我创建外键时出现此错误

   ORA-02270: no matching unique or primary key for this column-list

外键必须引用某个唯一键(无论是否为主键)。这里,pat_entry 中的唯一键是 (pat_name, diagnosis),但 pat_chkup 引用了 (pat_no, diagnosis).

只需更改一个以匹配另一个(基于您的应用程序逻辑中的正确部分),您应该没问题。