Mysql “我怎样才能解决问题?”;“外键约束格式不正确”;我的数据库中的问题
我创建了酒店,房间,客人的桌子。创建预订表后,我无法添加外键。它会出错 无法创建表Mysql “我怎样才能解决问题?”;“外键约束格式不正确”;我的数据库中的问题,mysql,foreign-keys,Mysql,Foreign Keys,我创建了酒店,房间,客人的桌子。创建预订表后,我无法添加外键。它会出错 无法创建表hotelbooking预订(错误号:150“外键约束格式不正确”) 您可以定义一个与房间中的主键相匹配的组合外键 CREATE TABLE Room ( hid int, RoomNo int, RoomType varchar(100), Price varchar(50), FOREIGN KEY (hid) REFERENCES Hotel(hid), CONSTRAINT PK_roomId PRI
hotelbooking
预订
(错误号:150“外键约束格式不正确”)
您可以定义一个与房间中的主键相匹配的组合外键
CREATE TABLE Room (
hid int,
RoomNo int,
RoomType varchar(100),
Price varchar(50),
FOREIGN KEY (hid) REFERENCES Hotel(hid),
CONSTRAINT PK_roomId PRIMARY KEY (hid, RoomNo)
);
CREATE TABLE Booking (
gId int,
hId int,
rhId int,
RoomNo int,
FromDate Date,
ToDate Date,
PaymentMethod varchar(100),
FOREIGN KEY (hid) REFERENCES Hotel(hid),
FOREIGN KEY (gid) REFERENCES Guest(gid),
FOREIGN KEY (rhid,RoomNo) REFERENCES Room(hid,RoomNo),
CONSTRAINT PK_bookingRoom PRIMARY KEY (gId, hId, RoomNo, FromDate)
);
或者在roomNo上定义idex
CREATE TABLE Room (
hid int,
RoomNo int,
RoomType varchar(100),
Price varchar(50),
FOREIGN KEY (hid) REFERENCES Hotel(hid),
KEY(RoomNo),
CONSTRAINT PK_roomId PRIMARY KEY (hid, RoomNo)
);
CREATE TABLE Booking (
gId int,
hId int,
RoomNo int,
FromDate Date,
ToDate Date,
PaymentMethod varchar(100),
FOREIGN KEY (hid) REFERENCES Hotel(hid),
FOREIGN KEY (gid) REFERENCES Guest(gid),
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo),
CONSTRAINT PK_bookingRoom PRIMARY KEY (gId, hId, RoomNo, FromDate)
);
您似乎正在尝试创建带有指向
酒店
、宾客
和客房
表的外键引用的预订
表,但如果您先创建预订
,则这些表还不存在
您需要先创建其他表,然后创建引用它们的Booking
表
或者,创建预订
,但不声明其外键。然后创建其他表。然后使用altertablebooking
向该表添加外键约束
但是,在创建表之前,外键不能引用表。是否要跨两个数据库创建外键?
CREATE TABLE Room (
hid int,
RoomNo int,
RoomType varchar(100),
Price varchar(50),
FOREIGN KEY (hid) REFERENCES Hotel(hid),
KEY(RoomNo),
CONSTRAINT PK_roomId PRIMARY KEY (hid, RoomNo)
);
CREATE TABLE Booking (
gId int,
hId int,
RoomNo int,
FromDate Date,
ToDate Date,
PaymentMethod varchar(100),
FOREIGN KEY (hid) REFERENCES Hotel(hid),
FOREIGN KEY (gid) REFERENCES Guest(gid),
FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo),
CONSTRAINT PK_bookingRoom PRIMARY KEY (gId, hId, RoomNo, FromDate)
);