如何修复 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)
.
只需更改一个以匹配另一个(基于您的应用程序逻辑中的正确部分),您应该没问题。
我正在尝试编写这段代码。
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)
.
只需更改一个以匹配另一个(基于您的应用程序逻辑中的正确部分),您应该没问题。