Bonjour à tous.
Je vous explique mon soucis, j'ai une transaction qui lit la dernière entrée dans une table puis qui insère une nouvelle ligne avec une nouvelle valeur.
Je vais prendre un exemple ça sera plus parlant, admettons que ma transaction a le comportement suivant : select de la derniere valeur dans ma table puis insert dans cette meme table de la valeur lue moins 200.
En cas d'action simultanée, j'ai le problème suivant :
si le solde est disons de 1000.
requete 1 :
select => 1000
requete 2 :
select => 1000
requete 1 :
insert => 800
requete 2 :
insert => 800
alors que j'aimerai avoir quelque chose de ce type plutôt :
requete 1 :
select => 1000
insert => 800
requete 2 :
select => 800
insert => 600
J'aimerai que pendant cette transaction, il ne soit pas possible de lire les données de cette table.
J'ai essayer avec TABLOCKX, et à priori ça résout mon soucis, par contre, je ne sais pas si c'est une solution propre ou sûre.
Partager