如何解决想将机组分配链接到上表,因为我收到一个错误 如何解决这个错误?
CREATE TABLE Route(
RouteNo VARCHAR(10),Origin VARCHAR(30),Destination VARCHAR(30),DepartureTime VARCHAR(15),SerialNo VARCHAR(5),ArrivalTime VARCHAR(15),PRIMARY KEY(RouteNo) );
CREATE TABLE Employee(
EmployeeID VARCHAR(5) NOT NULL,Name VARCHAR(30),Phone NUMBER,JobTitle VARCHAR(30),PRIMARY KEY(EmployeeID) );
CREATE TABLE Flight(
SerialNo VARCHAR(5),RouteNo VARCHAR(5),FlightDate DATE,ActualTD VARCHAR(10),ActualTA VARCHAR(10),PRIMARY KEY(SerialNo,RouteNo,FlightDate),FOREIGN KEY(RouteNo) REFERENCES Route(RouteNo),FOREIGN KEY(SerialNo) REFERENCES Airplane(SerialNo) ); -- does Airplane table exists ?
CREATE TABLE CrewAssigment(
EmployeeID VARCHAR(5),Role VARCHAR(45),Hours INT,PRIMARY KEY(EmployeeID,FOREIGN KEY(EmployeeID) REFERENCES Employee(EmployeeID),FOREIGN KEY(FlightDate) REFERENCES Flight(FlightDate) );
Select * from CrewAssignment
这是我在 CrewAssignment 表中遇到错误的代码,上面是引用外键的表。
错误报告 - ORA-02270: 此列列表没有匹配的唯一键或主键 02270. 00000 - “此列列表没有匹配的唯一键或主键” *原因:CREATE/ALTER TABLE 语句中的 REFERENCES 子句 给出没有匹配的唯一或主要的列列表 引用表中的键约束。 *操作:使用 ALL_CONS_COLUMNS 查找正确的列名 目录视图
解决方法
一些反对意见。
-
这显然是一个 Oracle 问题,而不是 MySQL。我怎么知道?
ORA-02270
是 Oracle 数据库错误代码;注意你使用的标签。 -
您应该使用
VARCHAR2
数据类型而不是VARCHAR
。为什么? Oracle 建议这样做。 -
create table flight
首先失败,因为它引用了airplane
表,并且它还不存在(至少,在您发布的代码中不存在) -
您抱怨的错误是由于
create table crewassignment
。它的一个外键引用了flight
表:FOREIGN KEY(flightdate) REFERENCES flight(flightdate)
但是
flight
的主键是复合的,由 3 列组成:PRIMARY KEY(serialno,routeno,flightdate)
这意味着您无法创建该外键。
那么,怎么办?不知道,我不知道负责这种数据模型的规则。要么修改flight
表的主键,要么修改crewassingment
表的外键约束。
也许您可以向 flight
表(由序列(或标识列,如果您的数据库版本支持)组成)添加一个新列,然后让 crewassignment
表引用 主键。您当前用作主键 (serialno,flightdate
) 的列将切换为 唯一 键。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。