我是新用户。我想问一下我在作业项目中遇到的错误。我创建 room_type_id
这是房间类型表中的主键。然后,room_type_id
作为外键包含在房间表中。问题是,如果我将房间类型 ID 之一输入为 RI2 而不是 RT2。当我尝试在房间表中的更新查询中更改它时,它显示无法更新子行外键约束失败。但是,它显示无法更新父行,房间类型表中的外键约束失败。我对我的英语感到抱歉,因为它不是我的主要语言
create table room_type ( room_type varchar(20) not null, room_type_id varchar(10) not null, primary key(room_type_id));
create table room ( room_no varchar(10) not null, building_id varchar(10) not null, room_type_id varchar(10) not null, room_price varchar(10) not null, primary key(room_no), foreign key (building_id) references building(building_id), foreign key (room_type_id) references room_type(room_type_id));
insert into room_type values ('Standard Room', 'RT1'), ('Dulexe Room', 'RI2'), ('Super Dulexe Room', 'RT3'), ('Suite Room', 'RT4'), ('Super Suite Room', 'RT5'), ('Executive Suite Room', 'RT6'), ('Presidential Suite Room', 'RT7'), ('Family Room', 'RT8'), ('VIP Room', 'RT9'), ('Ceremony Hall 1', 'RT10'), ('Ceremony Hall 2', 'RT11'), ('Ceremony Hall 3', 'RT12'), ('Meeting Conference Room 1', 'RT13'), ('Meeting Conference Hall 1', 'RT14'), ('Meeting COnference Hall 2', 'RT15');
insert into room values ('R101', 'B1', 'RT1', '0'), ('R102', 'B1', 'RT1', '0'), ('R103', 'B1', 'RT1', '0'), ('R107', 'B1', 'RI2', '0'), ('R108', 'B1', 'RI2', '0'), ('R1011','B1', 'RT3', '0'), ('R1012','B1', 'RT3', '0'), ('R1013','B1', 'RT3', '0'), ('R1014','B1', 'RT3','0'), ('R501', 'B5', 'RT4', '0'), ('R502', 'B5', 'RT4', '0'), ('R505', 'B5', 'RT5', '0'), ('R506', 'B5', 'RT5', '0'), ('R601', 'B6', 'RT4', '0'), ('R602', 'B6', 'RT4', '0'), ('R605', 'B6', 'RT5', '0'), ('R606', 'B6', 'RT5', '0'), ('R701', 'B7', 'RT6', '0'), ('R702', 'B7', 'RT6', '0'), ('R801', 'B8', 'RT7', '0'), ('R802', 'B8', 'RT7', '0'), ('R901', 'B9', 'RT8', '0'), ('R902', 'B9', 'RT8', '0'), ('R1001','B10','RT9', '0'), ('R1002','B10','RT9', '0'), ('R1101','B11','RT10', '0'), ('R1102','B11','RT11', '0'), ('R1103','B11','RT12', '0'), ('R1201','B12','RT13', '0'), ('R1202','B12','RT14', '0'), ('R1203','B12','RT15', '0');
Update room set room_type_id='RT2' where room_no='R107';
Update room set room_type_id='RT2' where room_no='R108', building_id='B1';
Update room_type set room_type_id = 'RT2' where room_type='Dulexe Room';
外键约束失败,因为在您的
room_type
表中没有包含room_type_id='RT2'
的行此外,如果
room
中的行具有特定的room_type_id
,则无法在room_type
表中更改该行。为此,您可以执行以下步骤:room_type
中添加包含正确room_type_id
的新行room
中有问题的行以获取新的room_type_id
room_type
中删除room_type_id
错误的行