El optimistic locking se implementa normalmente con…
Opciones
SELECT ... FOR UPDATEsobre la fila que quieres cambiar- Una columna de versión, que se actualiza solo si
versionsigue coincidiendo (Opción correcta) - Locks de tabla tomados al inicio de cada transacción
- Un cron job que busca conflictos cada minuto
Respuesta
Una columna de versión: UPDATE ... SET version = version + 1 WHERE id = ? AND version = ? y comprobando las filas afectadas
Por qué
El optimistic locking asume que los conflictos son raros y no bloquea nada mientras lees.
Cada fila tiene un número version. Al guardar, actualizas solo si la versión sigue siendo la que leíste, y la incrementas.
Si se actualizaron 0 filas, otra persona guardó antes: recarga y reintenta, o muestra un mensaje de conflicto.
El pessimistic locking (SELECT ... FOR UPDATE) bloquea la fila desde el principio.
Recuerda
Optimista = comprobar un número de versión al guardar.