gpt4 book ai didi

MySQL 外键约束失败

转载 作者:行者123 更新时间:2023-11-29 13:35:26 25 4
gpt4 key购买 nike

我有一个 SQL 语句:

CREATE TABLE RoomType(
hotelID SMALLINT NOT NULL,
name VARCHAR(20) NOT NULL,

PRIMARY KEY (hotelID, name)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE BookingItem(
bookingID SMALLINT NOT NULL,
roomTypeName VARCHAR(20) NOT NULL,

PRIMARY KEY (bookingID, roomTypeName),
FOREIGN KEY (roomTypeName) REFERENCES RoomType(name)

) ENGINE=InnoDB DEFAULT CHARSET=latin1;

它显示错误#1215 - 无法添加外键约束。但是,当我更改行时:

PRIMARY KEY (hotelID, name)

进入

PRIMARY KEY (name, hotelID)

它工作得很好。我不知道这里发生了什么。有人可以向我解释为什么会发生这种情况吗?非常感谢。

最佳答案

FOREIGN KEY 应与 PRIMARY KEY 最左侧的几列匹配,或与 PRIMARY KEY 完全匹配。

因此,在 (hotelID, name) PK 的情况下,您可以创建一个引用 hotelID(hotelID, name) 的外键>,但不是name

这就是documentation对此说道:

However, in the referenced table, there must be an index where the referenced columns are listed as the first columns in the same order.

关于MySQL 外键约束失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18808951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com