Как исправить отсутствие совпадающего уникального или первичного ключа для этой ошибки списка столбцов в sqlplus?

#sqlplus

#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
  

Ответ №1:

Внешний ключ должен ссылаться на некоторый уникальный ключ (будь то первичный ключ или нет). Здесь уникальный ключ в pat_entry есть (pat_name, diagnosis) , но pat_chkup ссылается (pat_no, diagnosis) .

Просто измените одно, чтобы оно соответствовало другому (на основе того, что правильно в логике вашего приложения), и все должно быть в порядке.