Oracle
 sql >> Base de données >  >> RDS >> Oracle

Existe-t-il un moyen de donner un message d'erreur convivial sur la violation de contrainte

Les contraintes sont ce que les bases de données utilisent pour se protéger des applications errantes, pas des utilisateurs.

Cela signifie que les violations de contraintes doivent être capturées par l'application et éventuellement nettoyé pour être présenté à l'utilisateur. Je considère qu'une application qui ne fait pas cela est déficiente d'une certaine manière.

Je dis "peut-être" puisque votre application (au moins pour ce cas) ne devrait jamais voir cela se produire. Il devrait presque certainement utiliser une commande déroulante à choix limité pour quelque chose comme ça. S'il utilisait une liste déroulante ou (choc, horreur) un champ de saisie de texte au format libre, il faudrait le redéfinir.

Cela signifierait que la violation ne se produirait jamais à moins, bien sûr, que l'application et la contrainte ne soient désynchronisées à un moment donné. Mais c'est quelque chose qui devrait être pris en compte lors des tests, bien avant qu'un client ne mette la main sur votre application.

Pour répondre à votre question, les messages qui sortent d'Oracle pour les violations de contraintes ne peuvent pas être modifiés. Le mieux que vous puissiez faire est de nommer intelligemment vos contraintes afin qu'elles aient un sens pour un utilisateur final.

Mais je maintiens toujours que cette présentation des problèmes à un utilisateur est une responsabilité de la couche application, pas de la couche base de données.