Отримання stacked diagnostics
Стекова діагностика дає змогу отримати внутрішнє повідомлення про помилку PostgreSQL і деталі винятку. Повернімося до нашої таблиці з пацієнтами й спробуймо додати значення A1C, що перевищує межу тестування. Це спричинить виняток перевірочного обмеження (check constraint), який ми зможемо перехопити. Ми використаємо stacked diagnostics у обробнику винятків, щоб збагатити запис про помилку.
Ця вправа є частиною курсу
Транзакції та обробка помилок у PostgreSQL
Інструкції до вправи
DECLAREдві змінніexc_messageіexc_detailтипу text.- Отримайте стек діагностики та встановіть
exc_messageякMESSAGE_TEXT, аexc_detailякPG_EXCEPTION_DETAIL. - Вставте
exc_messageіexc_detailу поляmsgіdetailтаблиці errors.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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;