suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Die übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden

Ich bin ein neuer Benutzer. Ich möchte nach einem Fehler fragen, auf den ich bei meiner Hausaufgabe gestoßen bin. Ich erstelle room_type_id 这是房间类型表中的主键。然后,room_type_id als Fremdschlüssel, der in die Zimmertabelle aufgenommen werden soll. Das Problem ist, wenn ich eine der Zimmertyp-IDs als RI2 statt RT2 eingebe. Wenn ich versuche, es in einer Aktualisierungsabfrage in der Raumtabelle zu ändern, wird angezeigt, dass die Fremdschlüsseleinschränkung der untergeordneten Zeile nicht aktualisiert werden konnte. Es zeigt jedoch, dass die übergeordnete Zeile nicht aktualisiert werden kann und die Fremdschlüsseleinschränkung in der Raumtyptabelle fehlgeschlagen ist. Das mit meinem Englisch tut mir leid, da es nicht meine Hauptsprache ist

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粉696891871275 Tage vor448

Antworte allen(1)Ich werde antworten

  • 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 错误的行

    Antwort
    0
  • StornierenAntwort