Bonjour,
J'ai le schéma suivant :
Candidat-diplome -0,1----prouver----0,1- Fichier
=> Un fichier peut prouver qu'un candidat a obtenu un diplôme et un candidat ayant obtenu un diplôme peut le prouver en joignant un fichier.
J'ai donc les tables suivantes :
te_candidat_diplome_cdp (cdp_id_candidat, cdp_id_diplome...) => table issue d'une "entité type associative
te_fichier_fic (fic_id...)
tj_fic_prouver_cdp_fpc (fpc_id_fichier, fpc_id_candidat, fpc_id_diplome)
J'ai défini les clés étrangères de la table tj_fic_prouver_cdp_fpc en CASCADE :
- Si je supprime un fichier, l'enregistrement correspondant sera supprimé dans la table associative ;
- Si je supprime une association candidat-diplome, l'enregistrement correspondant sera supprimé dans la table associative.
Mais dans ce dernier cas, l'existence du fichier n'a plus de sens et je voudrais que le fichier soit lui aussi supprimé "en cascade", ce qui ne peut pas se produire dans ce sens là.
J'ai donc l'idée de créer un trigger sur la table associative qui supprime fichier correspondant sur toute suppression de ligne dans la la table associative.
Il me semblait avoir lu il y a longtemps que le trigger ne se déclenchait pas sur les opérations de cascade mais uniquement lors de requêtes SQL explicites (DELETE, UPDATE, INSERT).
Est-ce le cas ou puis-je créer mon trigger sans crainte de tomber sur un cas où il ne s'exécuterait pas ?
Partager