У меня есть SQL заявление:MySQL внешнего ключа Ограничить терпит неудачу
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)
это работает прекрасно. Я не знаю, что здесь происходит. Может кто-нибудь объяснить мне, почему это происходит. Большое спасибо.
Я предполагаю, что внешний ключ должен соответствовать первичному первому ключу * для внешней таблицы. Помните, что комбинированный первичный ключ похож на один большой конкатенированный ключ. – Anthony