我创建了这个表 .
CREATE TABLE TourEvent(
TourID VARCHAR(7),
TourName references WineryTours(TourName),
Month CHAR (3),
Day NUMERIC (2),
Year NUMERIC (4),
Fee NUMERIC (4),
PRIMARY KEY(TourID)
);
我正在尝试创建另一个表,几乎将所有这个表引用到另一个表中,但我遇到了麻烦
ORA-02270:此列列表没有匹配的唯一键或主键
这是我到目前为止的代码
CREATE TABLE Bookings(
BookingID VARCHAR(7) PRIMARY KEY,
ClientID references Clients(ClientID),
TourID references TourEvent(TourID),
Tour references TourEvent(TourName),
EventMonth references TourEvent(MONTH),
EventDay references TourEvent(DAY),
EventYear references TourEvent(Year),
Fee references TourEvent(Fee),
DateBooked Date
);
阅读外键,它说我只能引用主键,我尝试不同的东西,但不知道如何继续 .
谢谢
3 回答
你有错误的方法 . 您只想包含
TourId
作为参考 . 像这样的东西:查询数据库时,可以使用
JOIN
获取巡视的详细信息 .笔记:
定义列时需要包含类型,甚至是外部引用 .
Oracle(仍然)推荐
VARCHAR2()
超过VARCHAR()
.定义外键引用时,列和键的类型必须匹配 .
实际上,您无法将外键添加到非主键字段 .
如果要将外键用于TouEvent表中的TourID字段,则需要为其创建主键 .
在
TourEvent
表中,可以用单个DATE
列替换DAY
,MONTH
和YEAR
列,TourName
列需要数据类型:命名约束并使用VARCHAR2 rather than VARCHAR也是一种好习惯 .
然后,您只需要引用主键:
如果您想查找旅游的详细信息,可以使用加入: