Pobieranie danych ze stosu diagnostycznego
Diagnostyka stosowa umożliwia pobranie wewnętrznego komunikatu błędu PostgreSQL oraz szczegółów wyjątku. Wróćmy do tabeli pacjentów i spróbujmy dodać wartość A1C przekraczającą dopuszczalny limit. Spowoduje to wyjątek naruszenia ograniczenia CHECK, który możemy przechwycić. Użyjemy diagnostyki stosowej w procedurze obsługi wyjątków, aby wzbogacić rejestrowane informacje o błędach.
To ćwiczenie jest częścią kursu
Transakcje i obsługa błędów w PostgreSQL
Instrukcje do ćwiczenia
- W bloku
DECLAREzadeklaruj dwie zmienne –exc_messageiexc_detail– jako typ text. - Pobierz stos diagnostyczny i przypisz do
exc_messagewartośćMESSAGE_TEXT, a doexc_detailwartośćPG_EXCEPTION_DETAIL. - Wstaw
exc_messageiexc_detailodpowiednio do pólmsgidetailtabeli błędów.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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;