Je suis un nouvel utilisateur. Je voudrais poser des questions sur une erreur que j'ai rencontrée dans mon projet de devoirs. Je crée room_type_id
这是房间类型表中的主键。然后,room_type_id
comme clé étrangère à inclure dans la table des pièces. Le problème est que si j'entre l'un des identifiants de type de chambre en tant que RI2 au lieu de RT2. Lorsque j'essaie de le modifier dans une requête de mise à jour dans la table de salle, le message Impossible de mettre à jour la contrainte de clé étrangère de la ligne enfant a échoué. Cependant, cela montre que la ligne parent ne peut pas être mise à jour et que la contrainte de clé étrangère dans la table des types de pièces a échoué. Je suis désolé pour mon anglais car ce n'est pas ma langue principale
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';
La contrainte de clé étrangère échoue car dans votre
room_type
表中没有包含room_type_id='RT2'
ligneAussi, si
room
中的行具有特定的room_type_id
,则无法在room_type
la ligne est modifiée dans le tableau. Pour ce faire, vous pouvez effectuer les étapes suivantes :room_type
中添加包含正确room_type_id
room
中有问题的行以获取新的room_type_id
room_type
中删除room_type_id
mauvaise ligne