2010-07-24 4 views
1

J'ai deux tâches tirant d'une table mysql. Ils veulent tous les deux faire une rangée, travailler dessus et mettre à jour cette ligne avec les résultats, mais je ne veux pas qu'ils sélectionnent la même ligne à mettre à jour. Quelle est la meilleure façon d'utiliser le moteur mysql/innodb pour verrouiller une ligne dans la sélection de sorte qu'elle ne soit pas disponible pour les autres threads mais leur permette de sélectionner d'autres enregistrements? est-ce possible?Utiliser mysql innodb comme une file d'attente?

merci!

Répondre

0

Vous pouvez ajouter le modificateur "FOR UPDATE" à la fin de votre instruction select. c'est-à-dire

SELECT * FROM table WHERE pkey = N POUR UPDATE;

.. mais je pense que vous devriez être prudent lorsque vous utilisez InnoDB comme une file d'attente et visant à la performance. Les files d'attente sont orientées pile et nécessitent des outils différents de ceux que InnoDB (et MySQL) tentent de résoudre.