Question

J'utilise Propulser en tant que mon ORM.

Je dois effectuer une mise à jour par lot dans une table contenant les champs suivants:

ID
Company
Assigned

La mise à jour prendra en compte un tableau de Société et définira le champ Assigne d sur 1 .

Le problème est qu'il peut y avoir 2 mises à jour par lot qui se produisent en même temps. Ainsi, lorsque cela se produira, je devrai accepter une mise à jour et en rejeter une autre. Est-il possible de verrouiller la table pour une mise à jour par lot? Ou existe-t-il une meilleure solution?

Était-ce utile?

La solution

Voici la solution que j'ai trouvée.

Au lieu de le verrouiller, une meilleure solution consiste à utiliser la requête équivalente suivante lors de la mise à jour par lot

update table 
set Assigned=2
where Assigned=1
and Company in {company1, company2}

Maintenant, si le nombre de lignes renvoyées n'est pas le même que le nombre de Société sélectionné, alors l'opération entière doit être annulé .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top