PostgreSQL | ||
---|---|---|
Anterior | Multi-Version Concurrency Control (Control de la Concurrencia Multi Versión) | Siguiente |
Lectura cursada es el nivel de aislamiento por defecto en Postgres. Cuando una transacción se ejecuta en este nivel, la consulta sólo ve datos cursados antes de que la consulta comenzara y nunca ve ni datos "sucios" ni los cambios en transacciones concurrentes cursados durante la ejecución de la consulta.
Si una fila devuelta por una consulta mientras se ejecuta una declaración UPDATE (o DELETE, o SELECT FOR UPDATE) está siendo actualizada por una transacción concurrente no cursada, entonces la segunda transacción que intente actualizar esta fila esperará a que la otra transacción se curse o pare. En caso de que pare, la transacción que espera puede proceder a cambiar la fila. En caso de que se curse (y si la fila todavía existe, por ejemplo, no ha sido borrada por la otra transacción), la consulta será reejecutada para esta fila y se comprobará que la nueva fila satisface la condición de búsqueda de la consulta. Si la nueva versión de la fila satisface la condición, será actualizada (o borrada, o marcada para ser actualizada).
Tenga en cuenta que los resultados de la ejecución de SELECT o INSERT (con una consulta) no se verán afectados por transacciones concurrentes.