首页  >  问答  >  正文

无法删除或更新父行

我是新用户。我想问一下我在作业项目中遇到的错误。我创建 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'; 

P粉696891871P粉696891871236 天前424

全部回复(1)我来回复

  • P粉037215587

    P粉0372155872024-02-26 16:08:09

    外键约束失败,因为在您的 room_type 表中没有包含 room_type_id='RT2' 的行

    此外,如果 room 中的行具有特定的 room_type_id,则无法在 room_type 表中更改该行。为此,您可以执行以下步骤:

    1. room_type 中添加包含正确 room_type_id 的新行
    2. 更新 room 中有问题的行以获取新的 room_type_id
    3. room_type 中删除 room_type_id 错误的行

    回复
    0
  • 取消回复