Obtener stacked diagnostics
Con los stacked diagnostics puedes obtener el mensaje de error interno de PostgreSQL y los detalles de la excepción. Volvamos a nuestra tabla de pacientes e intentemos añadir un A1C por encima del límite de la prueba. Esto provocará una excepción por una restricción CHECK que podremos capturar. Podemos usar los stacked diagnostics en el manejador de excepciones para enriquecer nuestro registro de errores.
Este ejercicio forma parte del curso
Transacciones y manejo de errores en PostgreSQL
Instrucciones del ejercicio
DECLAREdos variablesexc_messageyexc_detailcomo texto.- Obtén la pila de diagnósticos y asigna
exc_messageaMESSAGE_TEXTyexc_detailaPG_EXCEPTION_DETAIL. - Inserta
exc_messageyexc_detailen los camposmsgydetailde la tablaerrors.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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;