bonjour,
je dois développer une procédure stockée en PL/SQL qui doit regarder dans les données d'une vue matérialisée, et en deux selects concécutifs, trouver un enregistrement qui statisfait un certain critère et le marquer comme trouvé.
le shéma est en gros
select a into b from anyview where anycol4 != anyval;
select c into D from anyview where anycol2 = b;
update anytable set anycol2=1 where anycol4 = D;
avec anytable est la table à partir de la quelle la vue anyview a été construite.
mon problème, est que quand j'ai deux utilisateurs concecutifs, il arrive que je reçois en sortie la même valeur D, alors que ce n'est pas possible.
je ne comprend pas très bien les différents mode de lock table ou lock view. j'utilise le mode exclusive, mais il me génère rappidement un timeout.
comment puis-je éviter le problème des section critiques? comment puis-je interdire l'accès pendant les deux select et l'update aux autre utilisateurs tout en évitant de tomber dans un deadlock?
merci
AEMAG
Partager