PB de delete on cascade qui ne se fait pas

PB de delete on cascade qui ne se fait pas - SQL/NoSQL - Programmation

Marsh Posté le 30-08-2006 à 17:24:52    

Bonjour,  
 
j'ai défini une clé étrangère dans la table contrat qui référence la table bailleur. J'ai défini ce champ on delete set NULL, puis on delete cascade et aucun changement n'apparaît.  
 
Voici mes résultats :  
 
TABLE_NAME                     CONSTRAINT_NAME                C DELETE_RU
------------------------------ ------------------------------ - ---------
CONTRAT                        CONTRAT_CONTRATID_PK           P
CONTRAT                        FK_CONTRAT_BAILLEUR            R CASCADE
CONTRAT                        FK_CONTRAT_REGLEEVOL           R NO ACTION
CONTRAT                        FK_CONTRAT_CONTRAT             R NO ACTION
CONTRAT                        FK_CONTRAT_LIVRAISON           R NO ACTION
CONTRAT                        FK_CONTRAT_LIVRAISON_2         R NO ACTION
CONTRAT                        FK_CONTRAT_ADDCONTRAT          R NO ACTION
CONTRAT                        FK_CONTRAT_DEVISE              R NO ACTION
CONTRAT                        FK_CONTRAT_GROUPECTR           R NO ACTION
CONTRAT                        FK_CONTRAT_POLICE              R NO ACTION
 
SQL> delete from bailleur where bailleurid=67970551;
delete from bailleur where bailleurid=67970551
*
ERREUR à la ligne 1 :
ORA-02292: integrity constraint (ASSETTEST.FK_CONTACTBAIL_BAILLEUR) violated - child record found

 
 
SQL> select bailleurid, contratid from contrat where contratid=68276671;
 
BAILLEURID  CONTRATID
---------- ----------
  67970551   68276671
 
Est-ce parce que d'autres foreign key sont définies en NO ACTION que le contrat n'a pas été supprimé??
 
Y a t'il une solution à ce problème?
 
Merci

Reply

Marsh Posté le 30-08-2006 à 17:24:52   

Reply

Marsh Posté le 30-08-2006 à 18:40:06    

Réponse trouvée :  
 
Dès lors que plusieurs contraintes font références à un même champ (bailleurid), si un de ces champ interdit la suppression du bailleur par la présence du NO ACTION, ce champ n'est pas supprimé dans la table mère et donc dans aucune des tables filles, ce qui semble tout de même plus que logique. Dsl pour cette question non réfléchie...

Reply

Sujets relatifs:

Leave a Replay

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