Reversiones multisentencia
Ahora vamos a usar varias sentencias en una transacción para establecer un indicador en FIELD48 según si contiene activos del gobierno estatal de EE. UU. representados en RCON2203, activos extranjeros representados en RCON2236, o ambos. Los valores de FIELD48 deben ser 'US-STATE-GOV', 'FOREIGN' o 'BOTH', respectivamente. Sin embargo, has cometido un error en la sentencia para el caso de ambos.
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
- Crea 3 sentencias UPDATE para detectar cada condición y establecer el indicador.
- Deshaz el error de establecerlo como
'BOOTH'en lugar de'BOTH'haciendo un rollback de la transacción. - Selecciona un recuento de registros donde el indicador esté establecido en
'BOOTH'.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
-- Begin a new transaction
BEGIN;
-- Update FIELD48 flag status if US State Government deposits are held
UPDATE ffiec_reci
SET ___ = 'US-STATE-GOV'
WHERE RCON2203 > 0;
-- Update FIELD48 flag status if Foreign deposits are held
UPDATE ffiec_reci
SET FIELD48 = '___'
WHERE RCON2236 > 0;
-- Update FIELD48 flag status if US State Government and Foreign deposits are held
UPDATE ffiec_reci
SET FIELD48 = 'BOOTH'
WHERE RCON2236 > 0
AND ___ > 0;
-- Undo the mistake
___;
-- Select a count of records that are booth (it should be 0)
SELECT COUNT(FIELD48)
FROM ffiec_reci
WHERE ___ = 'BOOTH';