CREATE TABLE department (–科室
d_name VARCHAR2(100) PRIMARY KEY,
d_address VARCHAR2(100) NOT NULL,
d_phone_number NUMBER(11)NOT NULL,
d_doctor_name VARCHAR2(12),
CONSTRAINT fk_doctor_name FOREIGN KEY(d_doctor_name) REFERENCES doctor(d_name)
)
错误报告 -
ORA-02270: 此列列表的唯一关键字或主键不匹配
02270. 00000 - “no matching unique or primary key for this column-list”
*Cause: A REFERENCES clause in a CREATE/ALTER TABLE statement
gives a column-list for which there is no matching unique or primary
key constraint in the referenced table.
*Action: Find the correct column names using the ALL_CONS_COLUMNS
catalog view
根据错误报告,ORA-02270错误表示在CREATE TABLE语句中的REFERENCES子句中给出了一个列列表,但在引用的表中没有匹配的唯一或主键约束。
在给出的CREATE TABLE语句中,d_doctor_name列被定义为外键,并引用了doctor表中的d_name列。然而,根据错误报告,doctor表中的d_name列没有唯一或主键约束。
要解决这个错误,你需要确保doctor表中的d_name列具有唯一或主键约束。你可以通过以下步骤来实现:
确保doctor表中的d_name列没有重复值。如果有重复值,你需要先处理这些重复值。
确保doctor表中的d_name列具有唯一约束或主键约束。你可以使用ALTER TABLE语句来添加约束。例如,你可以使用以下语句添加唯一约束:
ALTER TABLE doctor ADD CONSTRAINT uk_d_name UNIQUE (d_name);
或者,你可以使用以下语句添加主键约束:
ALTER TABLE doctor ADD CONSTRAINT pk_d_name PRIMARY KEY (d_name);
请注意,如果doctor表中已经存在其他数据行,这些行的d_name值必须是唯一的才能成功添加约束。
完成上述步骤后,再次执行CREATE TABLE语句应该就不会出现ORA-02270错误了。