Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Existe uma maneira de fornecer uma mensagem de erro amigável sobre violação de restrição


Restrições são o que os bancos de dados usam para se proteger de aplicativos errôneos, não dos usuários.

Isso significa que as violações de restrições devem ser capturadas pelo aplicativo e possivelmente limpos para apresentação ao usuário. Eu consideraria um aplicativo que não fizesse isso como deficiente de alguma maneira.

Eu digo 'possivelmente' já que seu aplicativo (pelo menos para este caso) nunca deve ver isso acontecer. Quase certamente deve estar usando um controle suspenso de escolha limitada para algo assim. Se ele usasse uma caixa de combinação ou (choque, horror) um campo de entrada de texto de formato livre, ele precisaria ser redefinido.

Isso significaria que a violação nunca ocorreria, a menos, é claro, que o aplicativo e a restrição saíssem de sincronia em algum momento. Mas isso é algo que deve ser percebido nos testes, muito antes de um cliente colocar suas mãozinhas sujas em seu aplicativo.

Para responder à sua pergunta real, as mensagens que saem do Oracle para violações de restrições não podem ser alteradas. O melhor que você pode fazer é nomear suas restrições de forma inteligente para que faça sentido para um usuário final.

Mas ainda mantenho que essa apresentação de problemas a um usuário é responsabilidade da camada de aplicação, não da camada de banco de dados.