首頁  >  問答  >  主體

無法刪除或更新父行

我是新用戶。我想問一下我在作業項目中遇到的錯誤。我建立 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 天前421

全部回覆(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
  • 取消回覆