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

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

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

  1. create table Schedule
  2. (
  3. Schedule_SN number(10) primary key,
  4. ScreeningDate date not null,
  5. Price number(6) not null
  6. );
  7. create table Seat
  8. (
  9. Schedule_SN number(10) REFERENCES Schedule(Schedule_SN),
  10. Seat_SN varchar2(4) not null
  11. );
  12. create table Reservation
  13. (
  14. Reservation_SN number(15) primary key,
  15. DCtype number(2) not null,
  16. DCamount number(7),
  17. PaymentMethod number(1) not null,
  18. TotalPrice number(7) not null,
  19. ReservationDate date not null
  20. );
  21. create table Reservation_details **I need help here**
  22. (
  23. Reservation_SN number(15) REFERENCES Reservation(Reservation_SN),
  24. Schedule_SN number(10) REFERENCES Schedule(Schedule_SN),
  25. Seat_SN varchar2(10) REFERENCES Seat(Seat_SN),
  26. CONSTRAINT Reservation_detailesPK primary key (Reservation_SN, Schedule_SN)
  27. );

错误消息:
错误-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 此表的主键(如果它适合您的用例),其余的应该可以正常运行:

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

db小提琴演示

相关问题