Du måste lägga till ett index på id
kolumn för att säkerställa att du får ett lås på radnivå. SELECT ... FOR UPDATE
låser alla rader som läses för att utföra frågan, inte bara de rader som faktiskt är markerade. Utan ett index måste den utföra en fullständig tabellsökning, så varje rad är låst som ett resultat.
Med ett index sätter den bara ett lås i den indexposten, den behöver inte läsa några andra rader, så inga andra rader kommer att låsas.