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';
外键约束失败,因为在您的
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
错误的行