Specifieke exceptions vastleggen
Laten we een DO-functie bouwen die opvangt wanneer glucose op null wordt gezet en een bericht logt dat expliciet aangeeft dat Glucose niet null mag zijn.
Deze oefening maakt deel uit van de cursus
Transacties en foutafhandeling in PostgreSQL
Oefeninstructies
- Voeg binnen het
BEGIN-blok van de DO-functie metINSERTinpatientsde rij in (a1c=7.5,glucose=nullenfasting=TRUE). - Voeg een
not_null_violation-exception toe die bij een fout"Glucose can not be null."in de detailkolom vanerrorsinvoegt.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- Make a DO function
DO $$
-- Open a transaction block
BEGIN
INSERT INTO patients (a1c, glucose, fasting)
VALUES (7.5, ___, TRUE);
-- Catch an Exception
EXCEPTION
-- Make it catch not_null_constraint exception types
WHEN ___ ___
-- Insert the proper msg and detail
INSERT INTO errors (___, detail)
VALUES ('failed to insert', '___');
END$$;
-- Select all the errors recorded
SELECT * FROM errors;