CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Déclarez (DECLARE) deux variables exc_message et exc_detail de type text.
  • Récupérez la pile de diagnostics et affectez MESSAGE_TEXT à exc_message et PG_EXCEPTION_DETAIL à exc_detail.
  • Insérez exc_message et exc_detail dans les champs msg et detail de la table errors.

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;
Modifier et exécuter le code