Usar un nivel de aislamiento
Como viste en el vídeo, a veces es importante poder seleccionar un nivel de aislamiento para una transacción concreta. Lo mejor es usar START TRANSACTION (alias de BEGIN TRANSACTION) para dejar claro que hay algo distinto. Puedes especificar un ISOLATION LEVEL al iniciar la transacción.
Aquí vamos a usar REPEATABLE READ, que nos protege frente a lecturas sucias, lecturas no repetibles y lecturas fantasma. En los datos de la FFEIC, RCON2210 es el campo de depósitos a la vista y recoge todas las cuentas corrientes pendientes, cheques emitidos por el banco y abonos no contabilizados. Pueden ser un pasivo para un banco si hubiera una salida repentina de fondos por cualquier motivo. Vamos a encontrar todos los bancos con más de $100,000,000 en depósitos a la vista.
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
- Inicia una transacción con repeatable read.
- Selecciona todos los registros con
RCON2210por encima de $100,000,000 en depósitos a la vista. - Selecciona todos los registros con
RCON2210que sigan por encima de $100,000,000 en depósitos a la vista. - Haz COMMIT de la transacción.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- Create a new transaction with an isolation level of repeatable read
___ TRANSACTION ___ LEVEL ___ ___;
-- Count of records over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Count of records still over 100000000
SELECT ___(RCON2210)
FROM ffiec_reci
WHERE ___ > ___;
-- Commit the transaction
___;