Repaso
English

El optimistic locking se implementa normalmente con…

Opciones

  1. SELECT ... FOR UPDATE sobre la fila que quieres cambiar
  2. Una columna de versión, que se actualiza solo si version sigue coincidiendo (Opción correcta)
  3. Locks de tabla tomados al inicio de cada transacción
  4. 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.

Términos clave

Practica esta pregunta en Repaso