2010-09-15 3 views
2

Dans mon application, je recherche des produits disponibles dans mon tableau d'inventaire, sélectionnez-les, puis insérez l'ID de l'inventaire dans ma table des articles.Est-ce que deux utilisateurs peuvent travailler sur la même ligne dans mysql?

Les opérations SELECT & INSERT sont deux opérations différentes. Est-il possible qu'un autre utilisateur en même temps arrache les mêmes lignes récupérées et les utilise pour allouer les mêmes produits d'inventaire à différents articles?

+0

Regardez dans l'atomicité. –

Répondre

3

La réponse est oui.

En supposant que vous ne voulez pas que cela se produise, vous devriez envisager d'encapsuler les deux opérations dans une transaction. Je pense que les transactions sont disponibles dans MySQL depuis la version 4.

+0

... si vous utilisez le moteur InnoDB. –

+0

Oui, mais ils sont disponibles uniquement pour INNODB, MyISAM est non-transationnel. – cichy

0

Pour répondre directement à votre question, Oui, bien que cela dépende de la façon dont vous avez conçu la base de données. S'il y a un risque que cela se produise, vous pouvez envisager de verrouiller les enregistrements pour empêcher l'accès aux éléments que vous êtes en train d'assigner.

Vous pouvez trouver utile de rechercher "l'isolation des transactions" et aussi le "verrouillage d'enregistrement".

http://www.expresscomputeronline.com/20040426/techspace01.shtml

Espérons que vous devriez obtenir une compréhension de la façon dont diffèrent les verrous et les transactions.

Questions connexes