2013/6/24 Alexsander Rosa <alexsander.r...@gmail.com> > Estou colocando COMMENTS nas constraints com mensagens de erro mais claras. > Quero poder converter isto: > ERROR: new row for relation "produto" violates check constraint > "chk_produto_precomin" > Nisto: > O preço de tabela do produto não pode estar abaixo do preço mínimo. > > Gostaria de uma maneira de descobrir o SQLSTATE e o ID da constraint que > deu erro. > Em último caso vou procurar tudo que está entre aspas no catálogo. > > Infelizmente, até o PostgreSQL 9.3 não há um jeito realmente elegante de se fazer isso. Se você puder esperar um pouco, na versão 9.3 (hoje em beta) é possível coletar quais foram exatamente os objetos que geraram uma exceção [1]. Claro que essa funcionalidade também vai depender do driver da sua linguagem (que você não informou).
Se desconsiderarmos essa funcionalidade, creio que a melhor forma seja aliar o código da exceção [2] com o a mensagem de erro. Nesse caso, use sempre mensagens numa determinada língua (preferencialmente inglês, para evitar problemas) e faça um parser (regex) da mensagem de erro. Pegar só o que está entre strings me parece uma boa ideia, considerando que não use nomes fora do comum nos seus objetos não vejo problemas. [1] http://www.depesz.com/2013/03/07/waiting-for-9-3-provide-database-object-names-as-separate-fields-in-error-messages/ [2] http://www.postgresql.org/docs/current/static/errcodes-appendix.html Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral