MySQL: mise à jour de toutes les lignes en définissant un champ sur 0, mais en définissant le champ d'une ligne sur 1
Est-il un moyen efficace pour mettre à jour une sélection de lignes de champ à 0, mais l'Une de ces lignes à 1 basée sur un IDENTIFIANT.
En gros, j'ai plusieurs objets dans une base de données, et je veux basculer entre un "inuse", de sorte que la requête va définir l'une des lignes (par id) à inuse=1 et les autres à inuse=0.
Merci 🙂
source d'informationauteur Joel
Vous devez vous connecter pour publier un commentaire.
Sûr
serait le inuse champ à 1 si l'id est ABCD et 0 sinon.
Ce sera seulement à jour les lignes pertinentes.
Essayer
ou plus courte
par exemple
Si vous êtes après pour définir un indicateur, de sorte qu'aucune autre partie du code utilise le même objet en même temps, c'est mieux si le code d'appel fixe inuse=1 et réinitialise lorsque vous avez terminé. Sinon, vous finirez par un thread pour marquer un objet (ligne) comme inuse, et puis si un autre thread besoins d'un autre objet, il sera réinitialisé la première, tout est encore en usage.
Si ce n'est pas le cas, et que vous voulez juste être en mesure de définir inuse pour l'un, et de réinitialiser tous les autres, vous pouvez utiliser:
si votre base de données utilise des transactions, c'est la meilleure façon de le faire:
si vous n'utilisez pas de transactions, puis l'autre réponse à l'aide de CAS est la meilleure option, car il est portable. mais il faudra plus de temps PROCESSEUR que la mise à JOUR de deux états.