do-Anweisungen schreiben
Beim Bereinigen von Daten kommen häufig Datensätze mit ungültigen Datumsangaben vor. Das würde eine Exception auslösen und unsere SQL-Anweisung stoppen. Mit einer DO-Funktion und einem Exception-Handler läuft unsere Anweisung jedoch bis zum Ende durch. Schau dir an, wie wir diese Art von Exception mit der Tabelle patients und der Spalte created_on abfangen können. Dabei bekommst du auch die Gelegenheit, eine Funktion im DO-Stil zu verwenden.
Diese Übung ist Teil des Kurses
Transaktionen und Fehlerbehandlung in PostgreSQL
Anleitung zur Übung
- Erstelle eine
DO-Funktion, um das Abfangen einer Exception zu starten. - BEGINNE eine Transaktion, in der du die Zeile (
a1c=5.8,glucose=89,fasting=TRUEundcreated_on= '37-03-2020 01:15:54') in patientsINSERT-est. - Füge einen
EXCEPTION-Handler hinzu, der im Fehlerfall'bad date'in die Spaltedetailder Tabelleerrorseinfügt. - Gib die Sprache
'plpgsql'an.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
-- Create a DO $$ function
____ ____
-- BEGIN a transaction block
BEGIN
INSERT INTO patients (a1c, glucose, fasting, created_on)
VALUES (____, ____, ____, '37-03-2020 01:15:54');
-- Add an EXCEPTION
___
-- For all all other type of errors
WHEN others THEN
INSERT INTO errors (msg, detail)
VALUES ('failed to insert', '____');
END;
-- Make sure to specify the language
$$ language '____';
-- Select all the errors recorded
SELECT * FROM errors;