Captarea excepțiilor specifice
Hai să construim o funcție DO care detectează când glucose este setat la null și înregistrează un mesaj care specifică explicit că Glucose nu poate fi null.
Acest exercițiu face parte din cursul
Tranzacții și gestionarea erorilor în PostgreSQL
Instrucțiuni pentru exercițiu
- În interiorul blocului
BEGINal funcției DO, foloseșteINSERTpentru a adăuga înpatientsrândul (a1c=7.5,glucose=nullșifasting=TRUE). - Adaugă o excepție de tip
not_null_violationcare inserează"Glucose can not be null."în coloana detail din errors în cazul în care apare o eroare.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
-- 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;