Actualización perdida
Anomalía de concurrencia: dos transacciones leen la misma fila, ambas modifican a partir del valor leído, y la segunda escritura sobrescribe la primera. Un patrón leer-modificar-escribir sin bloqueos es un bug garantizado bajo contención.
Ejemplo clásico: incrementar un contador. Tx1 lee n=5, calcula 6. Tx2 lee n=5, calcula 6. Ambas escriben 6. Resultado: n=6 (se perdió un incremento). Opciones de defensa: (1) operaciones atómicas (UPDATE counter SET n = n + 1), (2) SELECT ... FOR UPDATE (bloqueo de fila), (3) control de concurrencia optimista (campo de versión, reintento ante conflicto), (4) aislamiento SERIALIZABLE. PostgreSQL, en REPEATABLE READ, detecta el conflicto en el UPDATE y aborta la transacción con "could not serialize". En las aplicaciones web modernas lo habitual es el patrón OCC con un bucle de reintento.