Obținerea diagnosticelor stivuite
Diagnosticele stivuite pot extrage mesajul intern de eroare PostgreSQL și detaliile excepției. Să revizitam tabela noastră de pacienți și să încercăm să adăugăm o valoare A1C care depășește limita admisă la testare. Aceasta va declanșa o excepție de constrângere de verificare pe care o putem captura. Putem folosi diagnosticele stivuite în blocul de gestionare a excepțiilor pentru a îmbogăți înregistrarea erorilor.
Acest exercițiu face parte din cursul
Tranzacții și gestionarea erorilor în PostgreSQL
Instrucțiuni pentru exercițiu
DECLAREdouă variabile,exc_messageșiexc_detail, de tip text.- Obține stiva de diagnostice și atribuie
MESSAGE_TEXTvariabileiexc_message, respectivPG_EXCEPTION_DETAILvariabileiexc_detail. - Inserează
exc_messageșiexc_detailîn câmpurilemsgșidetaildin tabela de erori.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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;