【发布时间】:2020-08-12 13:53:31
【问题描述】:
您好,有人可以帮我解决这个错误。我只是在学习 SQL,不知道如何修复它。 它表示引用表 'hotel' 中没有与外键 'fk_rooms_hotel' 中的引用列列表匹配的主键或候选键。
CREATE database Hotel_database;
USE Hotel_database;
-- Table `addresses`
CREATE TABLE addresses (
address_id INT PRIMARY KEY NOT NULL ,
address_line1 VARCHAR(100) NULL,
address_line2 VARCHAR(100) NULL,
city VARCHAR(45) NULL,
state VARCHAR(45) NULL,
country VARCHAR(45) NULL,
zipcode VARCHAR(8) NULL,
);
-- -----------------------------------------------------
-- Table `hotel_database`.`hotel_chain`
-- -----------------------------------------------------
CREATE TABLE hotel_chain (
hotel_chain_id INT NOT NULL,
hotel_chain_name VARCHAR(45) NULL,
hotel_chain_contact_number VARCHAR(12) NULL,
hotel_chain_email_address VARCHAR(45) NULL,
PRIMARY KEY (hotel_chain_id)
);
------------------------------------------------
-- Table `hotel`
-- -----------------------------------------------------
CREATE TABLE hotel (
hotel_id INT NOT NULL,
hotel_name VARCHAR(45) NULL,
hotel_contact_number VARCHAR(12) NULL,
hotel_email_address VARCHAR(45) NULL,
hotel_website VARCHAR(45) NULL,
hotel_description VARCHAR(100) NULL,
hotel_floor_count INT NULL,
hotel_room_capacity INT NULL,
hotel_chain_id INT NULL,
addresses_address_id INT NOT NULL,
check_in_time TIME NULL,
check_out_time TIME NULL,
PRIMARY KEY (hotel_id, addresses_address_id),
CONSTRAINT fk_hotel_addresses
FOREIGN KEY (addresses_address_id)
REFERENCES addresses (address_id)
);
-- -----------------------------------------------------
-- Table room_type
-- -----------------------------------------------------
CREATE TABLE room_type (
room_type_id INT NOT NULL,
room_type_name VARCHAR(45) NULL,
room_cost DECIMAL(10,2) NULL,
room_type_description VARCHAR(100) NULL,
PRIMARY KEY (room_type_id)
);
-- -----------------------------------------------------
-- Table rooms
-- -----------------------------------------------------
CREATE TABLE rooms (
room_id INT NOT NULL,
room_number INT NULL,
rooms_type_rooms_type_id INT NOT NULL,
hotel_hotel_id INT NOT NULL,
PRIMARY KEY (room_id, rooms_type_rooms_type_id, hotel_hotel_id),
CONSTRAINT fk_rooms_hotel
FOREIGN KEY (hotel_hotel_id)
REFERENCES hotel (hotel_id),
CONSTRAINT fk_rooms_rooms_type1
FOREIGN KEY (rooms_type_rooms_type_id)
REFERENCES room_type (room_type_id)
);
【问题讨论】:
-
该消息是解释性的。在您分配了 fk_rooms_hotel 外键的 CREATE TABLE 'rooms' DDL 中,表 'hotel' 不包含 hotel_id 列。也许它的名字不同?
标签: sql-server