Перехоплення конкретних винятків
Створімо функцію DO, яка фіксує випадок, коли значення glucose встановлено в null, і записує повідомлення з чітким поясненням, що Glucose не може бути null.
Ця вправа є частиною курсу
Транзакції та обробка помилок у PostgreSQL
Інструкції до вправи
- У блоці
BEGINфункції DO виконайтеINSERTуpatientsрядка (a1c=7.5,glucose=null,fasting=TRUE). - Додайте виняток
not_null_violation, який у разі помилки вставляє"Glucose can not be null."у стовпець detail таблиці errors.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
-- 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;