Obtenir des diagnostics empilés
Les diagnostics empilés permettent de récupérer le message d'erreur interne de PostgreSQL et les détails de l'exception. Revenons à notre table des patients et tentons d'ajouter une valeur d'A1C au‑delà de la limite de test. Cela provoquera une exception de contrainte CHECK que nous pourrons capter. Nous utiliserons les diagnostics empilés dans le gestionnaire d'exceptions pour enrichir l'enregistrement de nos erreurs.
Cette activité fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions de l’exercice
DECLAREdeux variablesexc_messageetexc_detailde type text.- Récupérez la pile de diagnostics et affectez
exc_messageàMESSAGE_TEXTetexc_detailàPG_EXCEPTION_DETAIL. - Insérez
exc_messageetexc_detaildans les champsmsgetdetailde la tableerrors.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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;