НачатьНачать бесплатно

Получение диагностики стека

Стековая диагностика позволяет получить внутреннее сообщение об ошибке 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;
Редактировать и запускать код