Først, som angivet i et andet indlæg, brug InnoDB. Det er standardlagringsmotoren fra MySQL 5.5 og er mere robust.
For det andet, se på denne side:http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
Du skal bruge en SELECT ... TIL OPDATERING for at forhindre andre forbindelser i at læse den række, du er ved at opdatere, indtil din transaktion er gennemført:
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
Dette er bedre end at låse tabellen, fordi InnoDB laver rækkeniveaulåse. Transaktionen ovenfor ville kun låse rækkerne, hvor id =5... så en anden forespørgsel, der arbejder med id =10, ville ikke blive tilbageholdt af denne forespørgsel.