
Envoyé par
Waldar
Vous essayez en réalité d'effectuer un contrôle multi-lignes, qu'on présente sous la forme d'assertion en langage normatif mais qui ne sont pas implémentées dans les SGBD tenors du marché.
Il s'agit d'un besoin un peu plus complexe qu'il n'y parait car il n'y a pas toujours un seul utilisateur simultané.
Un exemple : un premier utilisateur vérifie une disponibilité qui est OK, la réserve mais sans validation (en temps de traitement machine).
Un deuxième vérifie la même disponibilité qui sera OK puisque le premier n'a pas validé. Vous allez vous retrouver avec des doublons (au pire) car la vérification a été juste dans les deux cas.
Pour contourner ce problème, vous avez un premier moyen qui est simple, passez votre transaction en mode SERIALIZABLE : ça empêche toute modification pendant qu'une transaction est ouverte.
C'est une solution applicable si et uniquement si vous avez un nombre faible d'utilisateurs en simultané.
Si non, il faut vous tourner vers une autre modélisation et jouer avec des contraintes d'unicité. Dans ce cas il faut mieux détailler votre besoin si vous voulez un coup de main.
Partager