Obtendo stacked diagnostics
Stacked diagnostics permite obter a mensagem interna de erro do PostgreSQL e os detalhes da exceção. Vamos revisitar nossa tabela de pacientes e tentar adicionar um A1C acima do limite de teste. Isso vai gerar uma exceção de restrição CHECK que podemos capturar. Podemos usar o stacked diagnostics no manipulador de exceções para enriquecer nosso registro de erros.
Este exercício faz parte do curso
Transações e Tratamento de Erros no PostgreSQL
Instruções do exercício
- Use
DECLAREpara criar duas variáveisexc_messageeexc_detaildo tipo text. - Obtenha a pilha de diagnósticos e defina
exc_messagecomoMESSAGE_TEXTeexc_detailcomoPG_EXCEPTION_DETAIL. - Insira
exc_messageeexc_detailnos camposmsgedetailda tabela de erros.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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;