Получение диагностики стека
Стековая диагностика позволяет получить внутреннее сообщение об ошибке PostgreSQL и подробности об исключении. Вернёмся к таблице пациентов и попробуем добавить значение A1C, превышающее допустимый предел теста. Это вызовет исключение проверочного ограничения, которое мы сможем перехватить. Используем стековую диагностику в обработчике исключений, чтобы обогатить запись об ошибке.
Это упражнение является частью курса
Транзакции и обработка ошибок в PostgreSQL
Инструкции к упражнению
- С помощью
DECLAREобъявите две переменные —exc_messageиexc_detail— с типом text. - Получите стек диагностики и присвойте
exc_messageзначениеMESSAGE_TEXT, аexc_detail— значениеPG_EXCEPTION_DETAIL. - Вставьте
exc_messageиexc_detailв поляmsgиdetailтаблицы ошибок.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
DO $$
-- Declare our text variables: exc_message and exc_detail
___
___ text;
exc_detail ___;
BEGIN
INSERT INTO patients (a1c, glucose, fasting)
values (20, 89, TRUE);
EXCEPTION
WHEN others THEN
-- Get the exception message and detail via stacked diagnostics
___ ___ ___
exc_message = ___,
exc_detail = ___;
-- Record the exception message and detail in the errors table
INSERT INTO errors (___, detail) VALUES (exc_message, ___);
END;
$$ language 'plpgsql';
-- Select all the errors recorded
SELECT * FROM errors;