PB de delete on cascade qui ne se fait pas - SQL/NoSQL - Programmation
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...
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