まず、別の投稿で述べられているように、InnoDBを使用します。これはMySQL5.5の時点でのデフォルトのストレージエンジンであり、より堅牢です。
次に、次のページを見てください: http:// dev.mysql.com/doc/refman/5.5/en/innodb-locking-reads.html
トランザクションが完了するまで、更新しようとしている行を他の接続が読み取らないようにするには、SELECT ...FORUPDATEを使用する必要があります。
START TRANSACTION;
SELECT value INTO @value
FROM mytable
WHERE id = 5
FOR UPDATE;
UPDATE mytable
SET value = value + 1
WHERE id = 5;
COMMIT;
InnoDBは行レベルのロックを行うため、これはテーブルをロックするよりも優れています。上記のトランザクションは、id =5 ...の行のみをロックするため、id=10で動作する別のクエリはこのクエリによって保持されません。