Récupérer les 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 à la table des patients et essayons d’ajouter une valeur d’A1C au‑dessus de la limite de test. Cela provoquera une exception de contrainte CHECK que nous pourrons capturer. Nous utiliserons les diagnostics empilés dans le gestionnaire d’exceptions pour enrichir l’enregistrement de notre erreur.
Cet exercice fait partie du cours
Transactions et gestion des erreurs dans PostgreSQL
Instructions
- Déclarez (
DECLARE) deux variablesexc_messageetexc_detailde type text. - Récupérez la pile de diagnostics et affectez
MESSAGE_TEXTàexc_messageetPG_EXCEPTION_DETAILàexc_detail. - Insérez
exc_messageetexc_detaildans les champsmsgetdetailde la tableerrors.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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;