Wycofywanie transakcji z wieloma instrukcjami
Teraz użyjemy wielu instrukcji w ramach jednej transakcji, aby ustawić flagę w FIELD48 w zależności od tego, czy bank posiada aktywa rządów stanowych USA (kolumna RCON2203), aktywa zagraniczne (RCON2236) lub oba rodzaje. Odpowiednie wartości to 'US-STATE-GOV', 'FOREIGN' oraz 'BOTH'. Niestety, w instrukcji dotyczącej obu typów wkradł się błąd.
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w PostgreSQL
Instrukcje do ćwiczenia
- Zbuduj 3 instrukcje UPDATE, które wykryją każdy warunek i ustawią odpowiednią flagę.
- Cofnij błąd polegający na ustawieniu wartości
'BOOTH'zamiast'BOTH', wykonując rollback transakcji. - Wybierz liczbę rekordów, w których flaga ma wartość
'BOOTH'.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- 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';