微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决数据库中“外键约束格式不正确”的问题

如何解决如何解决数据库中“外键约束格式不正确”的问题

我创建了酒店,房间,来宾桌。创建预订表后,我无法添加外键。会出错。

无法创建表hotelbookingbooking错误号:150“外键约束格式不正确”)

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)
);


CREATE DATABASE hotelBooking;

CREATE TABLE Hotel (
hId int,Name varchar(100),Address varchar(255),City varchar(200),ContactNumber int(10),PRIMARY KEY (hid)
);

CREATE TABLE Guest (
gId int,firstName varchar(100),lastName varchar(100),Age int,Gender varchar(2),City varchar(50),PRIMARY KEY (gid)
);

CREATE TABLE Room (
hid int,RoomType varchar(100),Price varchar(50),CONSTRAINT PK_roomId PRIMARY KEY (hid,RoomNo)
); 

解决方法

您可以定义一个适合Room中主键的组合外键

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,FromDate Date,ToDate Date,PaymentMethod varchar(100),FOREIGN KEY (gid) REFERENCES Guest(gid),FOREIGN KEY (rhid,RoomNo) REFERENCES Room(hid,RoomNo),CONSTRAINT PK_bookingRoom PRIMARY KEY (gId,hId,RoomNo,FromDate)
);

或者您在roomNo上定义一个等值线

CREATE TABLE Room (
hid int,KEY(RoomNo),FOREIGN KEY (RoomNo) REFERENCES Room(RoomNo),FromDate)
);
,

您似乎正在尝试使用对BookingHotelGuest表的外键引用来创建Room表,但是如果您创建{{1 }},然后这些表还不存在。

您需要先创建其他表,然后创建引用它们的Booking表。

或者,替代地,创建Booking,但不声明其外键。然后创建其他表。然后使用Booking向该表添加外键约束。

无论如何,在创建表之前,外键都不能引用表。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。