无法创建表,sql错误ORA-02270

无法创建表,sql错误ORA-02270,sql,oracle,foreign-keys,ddl,Sql,Oracle,Foreign Keys,Ddl,是的,这件事不太确定。刚接触sql,我觉得一切都做对了,有什么想法吗?如果这不是添加外键的方法,请有人向我解释一下正确的方法是什么?非常感谢,谢谢 CREATE TABLE customer ( reference NUMBER(5) PRIMARY KEY, company_name VARCHAR2(30), address VARCHAR2(30), post_code VARCHAR2(10), telephone VARCHAR(20), contact_fname VARCHAR2(

是的,这件事不太确定。刚接触sql,我觉得一切都做对了,有什么想法吗?如果这不是添加外键的方法,请有人向我解释一下正确的方法是什么?非常感谢,谢谢

CREATE TABLE customer (
reference NUMBER(5) PRIMARY KEY,
company_name VARCHAR2(30),
address VARCHAR2(30),
post_code VARCHAR2(10),
telephone VARCHAR(20),
contact_fname VARCHAR2(20),
contact_sname VARCHAR2(20),
contact_email VARCHAR2(30)
);

CREATE TABLE manifest (
barcode NUMBER(10) PRIMARY KEY,
trip_id NUMBER(10),
pickup_customer_ref VARCHAR2(30),
delivery_customer_ref VARCHAR2(30),
category NUMBER(1),
weight NUMBER(10)
);

CREATE TABLE category (
category NUMBER(1) PRIMARY KEY,
description VARCHAR2(15),
requirements VARCHAR2(30),
FOREIGN KEY (category) REFERENCES manifest(category)
);

CREATE TABLE trip (
trip_id NUMBER(10) PRIMARY KEY,
departure_date DATE,
return_date DATE,
vehicle_id VARCHAR2(10),
employee_no NUMBER(10),
FOREIGN KEY (trip_id) REFERENCES manifest(trip_id)
);

CREATE TABLE vehicle (
registration VARCHAR2(10) PRIMARY KEY,
vehicle_type_id VARCHAR2(10),
model VARCHAR2(15), 
make VARCHAR2(15),
body VARCHAR2(15),
year NUMBER(4),
FOREIGN KEY (registration) REFERENCES trip(registration)
);

CREATE TABLE model (
vehicle_type_id VARCHAR(10) PRIMARY KEY,
make VARCHAR2(15),
model VARCHAR2(15),
FOREIGN KEY (vehicle_type_id) REFERENCES vehicle(vehicle_type_id)
);

CREATE TABLE driver (
employee_no NUMBER(10) PRIMARY KEY,
first_name VARCHAR2(20),
last_name VARCHAR(20),
ni_no VARCHAR2(15),
telephone VARCHAR2(20),
mobile VARCHAR2(12),
hazardous_goods VARCHAR2(1),
FOREIGN KEY (employee_no) REFERENCES trip(employee_no)
);
我得到的错误信息是

SQL Error: ORA-02270: no matching unique or primary key for this column-list
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

对于清单之后的每个表,我都会遇到这个错误。顺便说一句,错误消息非常清楚。外键的引用需要是另一个表中的唯一键或主键。因此,这在
类别中是错误的

FOREIGN KEY (category) REFERENCES manifest(category)
我想你打算让舱单看起来像这样:

CREATE TABLE manifest (
    barcode NUMBER(10) PRIMARY KEY,
    trip_id NUMBER(10) REFERENCES trip(trip_id),
    pickup_customer_ref VARCHAR2(30),
    delivery_customer_ref VARCHAR2(30),
    category NUMBER(1) REFERENCES category(category),
    weight NUMBER(10)
);
其他使用外键的地方也是如此。(外键引用使用简写符号;
CREATE TABLE
中的单独子句也可以。)

当然,在本例中,
manifest
的定义必须在category和
trip
之后

换句话说,引用位于另一个表中,而不是定义主键的位置


此外,我建议与外键的名称保持一致。至少,在可能的情况下,它们通常应与主键具有相同的名称。

行车id、车辆类型id和员工id都需要标记为唯一