Si vous n'avez pas d'index sur l'ID, cela verrouillera tous les enregistrements. Mais je suppose que vous avez un tel indice. Cela verrouillera tous les enregistrements correspondants, y compris certains enregistrements (si vous verrouillez 3 et 5, 4 est également verrouillé)
A SELECT ... FOR UPDATE lit les dernières données disponibles, paramètre verrous exclusifs sur chaque ligne, il lit. Ainsi, il définit les mêmes verrous qu'un SQL UPDATE recherché placerait sur les lignes.
modifier Dans le cas de SELECT max (id) FROM ... vous n'avez pas besoin de lire toutes les lignes de la table, parce que cette information peut être optained de l'indice. Si vous voulez verrouiller exactement une ligne, la requête correcte serait SELECT * FROM table WHERE id = SELECT max (id) FROM table
c'est ma question. Lire la dernière ligne de ma question – user677900
Oui, je sais. Je l'ai trouvé à la dernière ligne de votre question. Et je pense toujours que vous ne devriez pas poser plusieurs questions qui demandent la même chose. –