Bonjour,
Soit un enchaînement de procédures pour créer un candidat qui est une personne-physique :
Algorithmiquement dans la procédure de création du candidat :
1) Si l'identifiant de la personne physique est null ou n'existe pas, j'appelle la procédure de création d'une personne physique.
2) La procédure de création d'une personne physique contient une transaction qui rollback en cas d'erreur sur une clé étrangère fournie ou qui commit si tout va bien. Elle renvoie alors l'identifiant de la personne créée.
3) On vérifie d'autres données nécessaires à la création du candidat puis on enregistre le candidat. Il peut là aussi y avoir des erreurs de clés étrangères qui sont capturées en tant qu'exception et la procédure rollback ou commit si tout va bien.
Si je démarre la transaction dans la procédure de création du candidat, un éventuel rollback va t-il annuler la création de la personne physique ?
Autrement dit, est-ce que je peux encapsuler les transactions par le jeu de l'enchaînement des procédures ?
Sinon, dois-je gérer la transaction globale en dehors des procédures ?
Dans l'application, je peux être amené à :
- créer un utilisateur qui entraîne la création d'une personne physique ;
- créer un candidat qui entraîne la création d'une personne physique ;
- créer un étudiant qui entraîne la création d'un candidat qui entraîne la création d'une personne physique ;
- créer un autre type de personne qui entraîne la création d'une personne physique...
La procédure de création d'une personne physique ajoute d'abord une personne (qui peut aussi être une personne morale) puis une personne physique.
J'y ai mis une transaction pour rollback la création de la personne en cas d'erreur lors de la création de la personne physique.
En principe, je ne créerai jamais de personne physique sans passer par la création du type de cette personne (utilisateur, candidat, étudiant...) mais je n'aime pas l'idée qu'on puisse le faire vu l'existence de la procédure.
Bref, j'aimerais avoir vos avis sur la meilleur façon de gérer ça en empêchant de créer des personnes inutiles dans la BDD.
Partager