Перехват конкретных исключений
Давайте создадим DO-функцию, которая перехватывает ситуацию, когда для поля glucose задано значение null, и записывает сообщение о том, что Glucose не может быть null.
Это упражнение является частью курса
Транзакции и обработка ошибок в PostgreSQL
Инструкции к упражнению
- Внутри блока
BEGINDO-функции выполните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;