Niveles de aislamiento y transacciones
SERIALIZABLE es un nivel de aislamiento que toma una instantánea del registro cuando se ejecuta la primera consulta o instrucción de actualización y genera un error si los datos se alteran de cualquier forma fuera de la transacción. Ten en cuenta que la transacción puede hacer otros trabajos, como declarar variables, antes de la primera consulta.
Volverás a usar el conjunto de datos de la FFIEC para trabajar con datos donde el cambio anual en los depósitos de ahorro RCON0352 se ve afectado por un gran desplazamiento.
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
- Inicia una transacción en modo
SERIALIZABLE. - Actualiza todos los registros donde
RCON0352sea mayor que 100,000 con una reducción del 50%. COMMITde la transacción.- Selecciona el recuento de los registros que aún tengan un
RCON0352mayor que 100,000.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- Create a new transaction with a serializiable isolation level
___ TRANSACTION ISOLATION LEVEL ___;
-- Update records with a 50% reduction if greater than 100000
___ ffiec_reci
SET ___ = ___ * 0.5
WHERE RCON0352 > 100000;
-- Commit the transaction
___;
-- Select a count of records still over 100000
SELECT ___(RCON0352)
FROM ___
WHERE RCON0352 > 100000;