Catturare eccezioni specifiche
Creiamo una funzione DO che intercetta quando glucose è impostato a null e registra un messaggio che dichiara esplicitamente che Glucose non può essere null.
Questo esercizio fa parte del corso
Transazioni e gestione degli errori in PostgreSQL
Istruzioni dell'esercizio
- All'interno del blocco
BEGINdella funzione DO, eseguiINSERTinpatientsdella riga (a1c=7.5,glucose=nullefasting=TRUE). - Aggiungi un'eccezione
not_null_violationche inserisca"Glucose can not be null."nella colonna detail dierrorsin caso di errore.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
-- 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;