繁体   English   中英

我对这个脚本的引用有问题

[英]I have a problem with the referencing of this Script

将表格预订引用给人和司机时出错。 第17行的错误:ORA-02270:此列列表没有匹配的唯一键或主键

我几乎尝试了一切,请帮助我。

alter session set NLS_DATE_FORMAT='DD/MM/YYYY';

DROP TABLE CARSERVICE;
DROP TABLE DRIVERBEN;
DROP TABLE BENEFITS;
DROP TABLE FOLLOWUP;
DROP TABLE INCIDENT;
DROP TABLE DSESSION;
DROP TABLE TRAINING;
DROP TABLE DRIVERINS;
DROP TABLE BOOKING;
DROP TABLE DRIVER;
DROP TABLE PERSON;

CREATE TABLE PERSON
(
PID               CHAR(6) PRIMARY KEY,
PName             VARCHAR(20),
PDOB              DATE,
Sex               CHAR(1),
PMOBILE       CHAR(12)
);


CREATE TABLE DRIVER
(
DID               CHAR(6),
DGrade            CHAR(1),
DCarId            CHAR(6),
DLicense          CHAR(8),
DStart            DATE,
DIPlan            CHAR(1),
DSession         CHAR(6),
DNRIC             CHAR(12),
PID            CHAR(6),
PRIMARY KEY (DID, DCarId),
FOREIGN KEY (DID) references PERSON(PID)
);

CREATE TABLE BOOKING
(
BookingID        CHAR(6),
PickLoc        VARCHAR(250),
DropLoc           VARCHAR(250),
TripRating        NUMBER(1),
RideFare          NUMBER(*,1),
TollOther         NUMBER(*,1),
TDate             DATE,
TTime             VARCHAR(5),
BStatus           CHAR(1),
Payment           VARCHAR(12),
IncRep            CHAR(1),
PID               CHAR(6),
DID               CHAR(6),
PRIMARY KEY(BookingID,PID,DID),
FOREIGN KEY (DID) references Driver(DID),
FOREIGN KEY (PID) references PERSON(PID)
);


CREATE TABLE DRIVERINS
(
DIID               CHAR(6) PRIMARY KEY,
PAmount            NUMBER(*,1),
PDt                DATE,
FOREIGN KEY (DIID) references DRIVER (DID)
);

CREATE TABLE TRAINING
(
TID     CHAR(6) PRIMARY KEY,
TrainingPrg        VARCHAR(50),
PrgSession         VARCHAR2(10)
);

CREATE TABLE DSESSION
(
SID               CHAR(6) PRIMARY KEY,
SDate        DATE,
TID        CHAR(6),
FOREIGN KEY (SID) references DRIVER(DID),
FOREIGN KEY (TID) references TRAINING(TID)
);





CREATE TABLE INCIDENT
(
INCID              CHAR(6) PRIMARY KEY,
RIncident          VARCHAR(30),
IncDate            DATE,
FOREIGN KEY (INCID) references BOOKING(BookingID)
);

CREATE TABLE FOLLOWUP
(
FollowID              CHAR(6) PRIMARY KEY,
IncPIC                VARCHAR(30),
FollowUpDt            VARCHAR2(50),
IncStatus             CHAR(1),
FollowUpDate    DATE,
FOREIGN KEY (FollowID) references INCIDENT(INCID)
);

CREATE TABLE BENEFITS
(
BID                CHAR(6) PRIMARY KEY,
CMedBenefit        NUMBER(*,1),
OBetterCars        NUMBER(*,1),
PrepRet            NUMBER(*,1)
);

CREATE TABLE DRIVERBEN
(
DBID               CHAR(6),
CMedBenefit        CHAR(1),
OBetterCars        CHAR(1),
PrepRet            CHAR(1),
FOREIGN KEY (DBID) references DRIVER(DID)
);


CREATE TABLE CARSERVICE
(
CarID                 CHAR(6) PRIMARY KEY,
CarType               VARCHAR(20),
ServRem               VARCHAR(250),
CarServDate           DATE,
NextServD             DATE,
FOREIGN KEY (CarID) references DRIVER(DCarId)
);

你有这些定义:

CREATE TABLE DRIVER (
    . . .
    PRIMARY KEY (DID, DCarId),
    . . .
);

CREATE TABLE BOOKING (
    . . 
    FOREIGN KEY (DID) references Driver(DID),
    . . .
);

这些是不一致的。 Driver的主键有两个组件键。 外键引用仅使用一个。 你需要参考两者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM