Bonjour,
J'ai quelques soucis pour traiter certaines opérations du MPD ci-dessous. Je travaille avec Firebird et Delphi 7 sous Windows
Lorsque je veux supprimer une ligne du devis, il me faut d'abord supprimer la ligne présente dans la table de jointure "Lig_devis" puis dans la table "LIGNE", sauf si je mets mes clés étrangères de "Lig_devis" en cascade. Je gère cela correctement avec une procédure stockée ou pas.
Par contre, les choses se compliquent dès que je veux supprimer le devis en totalité, car il faut supprimer les lignes présentes dans "Lig_devis", puis dans "LIGNE" et enfin la ligne du devis dans "DEVIS".
Pour parvenir au résultat, si les clés étrangères de "Lig_devis" sont positionnées "NO ACTION", je dois créer une table temporaire, transférer les lignes de "Lig_devis" concernées, puis supprimer les éléments des tables "LIGNE" et "DEVIS". Ensuite, supprimer la table temporaire.
Bonjour la manœuvre
Je voudrais savoir s'il n'existe pas une méthode plus simple à l'aide d'un trigger ou d'une procédure stockée. Merci, de me donner votre avis.
Le positionnement des clés étrangères dans "Lig_devis" en cascade ne supprime pas ma difficulté car les lignes de la table "LIGNE" ne sont supprimées. La table "Lig_devis" est l'enfant de "DEVIS" et "LIGNE" d'où impossibilité en supprimant la ligne dans "Lig_devis" d'enlever la ligne liée dans "LIGNE". Si trigger avant Delete dans "Lig_devis", je me heurte à la récursivité.
Je tourne en rond et fais bouillir les quelques neurones qui me restent.
Je ne suis peut être pas très explicite, ceci explique peut-être cela, mais vous pouvez me demander des renseignements complémentaires si nécessaire
D'avance merci
Partager