[Resolu] Update de deux tables.

Update de deux tables. [Resolu] - SQL/NoSQL - Programmation

Marsh Posté le 04-05-2006 à 10:50:18    

Bonjour !
 
Alors voilà, j'ai un petit problème concernant la mise à jour de mes tables.
 
Voici les deux tables principalement concernées :
 
create table Entite_Machine (
     Nom_Machine char(30) not null,
     Adresse_Ip char(15) not null,
     Systeme_Exploitation char(30) not null,
     Type_Ressource_M char(30) not null,
     Numero_Local char(10) not null,
     Nom_Script_Machine char(30) not null,
     constraint ID_Entite_Machine_ID primary key (Nom_Machine));
 
create table Local (
     Numero char(10) not null,
     Telephone char(20) not null,
     constraint ID_Local_ID primary key (Numero));
 
alter table Entite_Machine add constraint FKLocalisation_Machine_FK
     foreign key (Numero_Local)
     references Local (Numero);

 
J'aimerais pouvoir mettre à jour le numero du local. Or :  
 
1) Lorsque je tente de mettre à jour la table local, j'obtiens le message d'erreur suivant :  
#1217 - Cannot delete or update a parent row: a foreign key constraint fails
 
2) Lorsque je tente de mettre à jour la table entite_machine, j'obtiens celui-ci :  
#1216 - Cannot add or update a child row: a foreign key constraint fails
 
Les deux messages sont logiques mais je n'arrive pas à trouver comment faire le tout en une seule fois  :??:  
 
Merci d'avance de votre aide  :)


Message édité par Tyam le 04-05-2006 à 12:59:35
Reply

Marsh Posté le 04-05-2006 à 10:50:18   

Reply

Marsh Posté le 04-05-2006 à 11:41:09    

Tu peux désactiver ta contrainte le temps de la modif si tu sais ou faut le faire.
 
Sinon tu aurais pu mettre à null ta valeur dans entitemachine, puis update la table local, puis la table entitemachine mais tu as une contrainte NOT NULL qui traine :D !
 
Plus proprement, tu peux supprimer ta contrainte foreign key et la recréer de la maniere suivante :  
alter table Entite_Machine add constraint FKLocalisation_Machine_FK  
     foreign key (Numero_Local)  
     references Local (Numero)
     ON UPDATE CASCADE;
 
et faire l'update dans ta table Local ;) !


Message édité par darkfrost le 04-05-2006 à 11:42:13
Reply

Marsh Posté le 04-05-2006 à 11:50:20    

Oki je vais essayer.


Message édité par Tyam le 04-05-2006 à 11:51:30
Reply

Marsh Posté le 04-05-2006 à 11:50:55    

Cela fonctionne parfaitement ! Merci beaucoup  :love:


Message édité par Tyam le 04-05-2006 à 12:59:16
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed