ПочатиПочніть безкоштовно

Отримання 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;
Редагувати та запускати код