ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Use DECLARE para criar duas variáveis exc_message e exc_detail do tipo text.
  • Obtenha a pilha de diagnósticos e defina exc_message como MESSAGE_TEXT e exc_detail como PG_EXCEPTION_DETAIL.
  • Insira exc_message e exc_detail nos campos msg e detail da 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;
Editar e executar o código