2010-12-01 3 views
0

Je suis sur le point de mettre en place un mécanisme de verrouillage d'enregistrement comme suit:bloque un enregistrement spécifique dans MySQL

Table1: 
    Field: "ID" (AutoIncrement, Primary) 
    Field: "Name" (Text) 
    Field: "More fields..." 

Table2: 
    Field: "ID" (Unique) 

Pour verrouiller un enregistrement spécifique au tableau 1, je vais créer un enregistrement dans Tableau2 avec le même ID . Si cette création échoue en raison d'un tel enregistrement déjà existant, alors l'enregistrement doit être verrouillé par un autre processus et je tourne. Si cela réussit, j'ai le verrou et je peux modifier l'enregistrement. Quand j'ai fini, je supprime l'enregistrement de verrouillage dans le tableau 2.

Ma question est de savoir si c'est une façon valide d'implémenter un verrou par enregistrement, et si ce n'est pas le cas, y a-t-il une telle chose?

Cheers, Charlie.

+0

les gens intelligents à MySQL ont déjà fait cela pour vous - il est appelé le moteur transactionnel innodb –

Répondre

1

Vous pouvez utiliser innodb pour le verrouillage en rangée,
ou même read-lock au lieu d'imposer de verrouillage à une autre table,
(plutôt de laisser MySQL pour gérer condition de course)

+0

Merci, je n'avais aucune idée. Devrait avoir rtfm. –

Questions connexes