J'ai des problèmes avec SELECT MySQL .. FOR UPDATE, voici la requête que je suis en train de courir:MYSQL SELECT ... POUR MISE À JOUR Ne fonctionne pas?
SQL = "SELECT * " +
"FROM " + TableName + " " +
"WHERE out_status IN ("+outSStatus+") AND queued <= NOW() " +
"ORDER BY out_status, id_queue ASC "+ limitSql+
"FOR UPDATE";
Après cela, le fil va faire une UPDATE et changer le out_status à 99, qui est alors il devrait débloquer la rangée.
Je suis en cours d'exécution d'une application Java multi-thread, donc 3 fils sont en cours d'exécution de cette instruction SQL, mais quand fil 1 fonctionne cela, il ne se verrouille pas (cacher) ses résultats de fil 2 & 3. Par conséquent, les discussions 2 & 3 obtiennent les mêmes résultats.
Chaque thread est également sur sa propre connexion mysql.
Quelqu'un peut-il m'aider s'il vous plaît avec ceci? OU peut-être avoir une meilleure solution?
Très appréciée.
J'ai mis auto-commit = off ... Et avec ce qui précède, j'ai encore besoin d'utiliser des transactions pour que cela fonctionne? Par exemple: BEGIN et COMMIT – James
@ James: Ok, mais au moins ça a commencé à fonctionner. Vous pouvez accepter la réponse de Vikash alors, je suggère. –