我试图从两列中创建一个主键,但效果不好

lvjbypge  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(279)

我在自学甲骨文。
这是我的密码:

create table Schedule
(
    Schedule_SN number(10) primary key,
    ScreeningDate date not null,
    Price number(6) not null
);

create table Seat 
(
    Schedule_SN number(10) REFERENCES Schedule(Schedule_SN),
    Seat_SN varchar2(4) not null
);

create table Reservation
(
    Reservation_SN number(15) primary key,
    DCtype number(2) not null,
    DCamount number(7),
    PaymentMethod number(1) not null,
    TotalPrice number(7) not null,
    ReservationDate date not null
);

create table Reservation_details  **I need help here**
(
    Reservation_SN number(15) REFERENCES Reservation(Reservation_SN),
    Schedule_SN number(10) REFERENCES Schedule(Schedule_SN),
    Seat_SN varchar2(10) REFERENCES Seat(Seat_SN),
    CONSTRAINT Reservation_detailesPK primary key (Reservation_SN, Schedule_SN)
);

错误消息:
错误-ora-02270:此列列表没有匹配的唯一键或主键
227000000-“此列列表没有匹配的唯一键或主键”

  • 原因:create/alter table语句中的references子句给出的列列表在被引用的表中没有匹配的unique或primary key约束。
  • 操作:使用all\u cons\u columns目录视图查找正确的列名

如何制作我的2列 (Reservation_SN, Schedule_SN) 变成主键?

pgky5nke

pgky5nke1#

问题在于 seat_sn . 您想要子列 reservation_details 引用中的父列 seat ,但父列不是主键或唯一键。事实上, seat 没有主键;只是制造 seat_sn 此表的主键(如果它适合您的用例),其余的应该可以正常运行:

create table seat (
    schedule_sn nmber(10) references schedule(schedule_sn),
    seat_sn varchar3(4) primary key
)

db小提琴演示

相关问题