Rollbacks met meerdere statements
Laten we nu meerdere statements in een transactie gebruiken om een vlag in FIELD48 te zetten op basis van of er activa van Amerikaanse deelstaatregeringen in RCON2203 staan, buitenlandse activa in RCON2236, of beide. De waarden voor FIELD48 moeten respectievelijk 'US-STATE-GOV', 'FOREIGN' of 'BOTH' zijn. Je hebt echter een fout gemaakt in het statement voor beide.
Deze oefening maakt deel uit van de cursus
Transacties en foutafhandeling in PostgreSQL
Oefeninstructies
- Bouw 3 UPDATE-statements om elke voorwaarde te detecteren en de vlag te zetten.
- Maak de fout ongedaan waarbij je
'BOOTH'in plaats van'BOTH'hebt gezet door de transactie terug te draaien. - Selecteer een telling van records waar de vlag is ingesteld op
'BOOTH'.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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';