SELECT FOR UPDATE
を使用できます 。トランザクション内で、次のように「ロック」する行の選択を開始します。
SELECT * from TABLE where id = 123 FOR UPDATE;
2つの異なるトランザクションが同時にこれを実行しようとすると、MySQLは最初のトランザクションがトランザクションをコミットするまで2番目のトランザクションを待機させます。そうすれば、2番目のトランザクションは、最初のトランザクションが実行された後にのみ行を確認することが保証されます。