Как исправить не совпадающий уникальный или первичный ключ для этой ошибки списка столбцов в sqlplus? - PullRequest
1 голос
/ 31 марта 2019

Я пытаюсь написать этот код.

    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 Ответ

0 голосов
/ 31 марта 2019

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

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

...