Tout d'abord, comme indiqué dans un autre article, utilisez InnoDB. C'est le moteur de stockage par défaut depuis MySQL 5.5 et il est plus robuste.
Deuxièmement, regardez cette page :http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Vous devez utiliser un SELECT ... FOR UPDATE pour empêcher les autres connexions de lire la ligne que vous êtes sur le point de mettre à jour tant que votre transaction n'est pas terminée :
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
C'est mieux que de verrouiller la table car InnoDB effectue des verrous au niveau des lignes. La transaction ci-dessus ne verrouillerait que les lignes où id =5... donc une autre requête fonctionnant avec id =10 ne serait pas bloquée par cette requête.