我正在尝试从2列创建一个主键,但是效果不佳

时间:2020-06-25 22:56:16

标签: sql database oracle foreign-keys create-table

我正在独自学习Oracle。

这是我的代码:

  df <- data.frame(Tag=sample(Tags, replace=TRUE),
             Section=sample(Sections, replace=TRUE))  # doesn't work
                                                                               

错误消息:

错误-ORA-02270:此列列表没有匹配的唯一键或主键
02270. 00000-“此列列表没有匹配的唯一键或主键”
*原因:CREATE / ALTER TABLE语句中的REFERENCES子句提供了一个列列表,在被引用的表中没有匹配的唯一键或主键约束。
*操作:使用ALL_CONS_COLUMNS目录视图查找正确的列名称

如何将我的两列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) ); 设置为主键?

1 个答案:

答案 0 :(得分:1)

问题出在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
)

Demo on DB Fiddle