I vincoli sono ciò che i database utilizzano per proteggersi da applicazioni errate non dagli utenti.
Ciò significa che le violazioni dei vincoli devono essere rilevate dall'applicazione e possibilmente ripulito per la presentazione all'utente. Considererei un'applicazione che non lo ha fatto in qualche modo carente.
Dico "forse" poiché la tua applicazione (almeno per questo caso) non dovrebbe mai vederlo accadere. Quasi certamente dovrebbe utilizzare un controllo a scelta limitata a discesa per qualcosa del genere. Se utilizzasse una casella combinata o (shock, horror) un campo di immissione di testo in formato libero, dovrebbe essere ridefinito.
Ciò significherebbe che la violazione non si verificherebbe mai a meno che, ovviamente, l'applicazione e il vincolo non siano sincronizzati a un certo punto. Ma questo è qualcosa che dovrebbe essere catturato durante i test, molto prima che un cliente metta le mani sporche sulla tua applicazione.
Per rispondere alla tua vera domanda, i messaggi che escono da Oracle per le violazioni dei vincoli non possono essere modificati. Il meglio che puoi fare è nominare i tuoi vincoli in modo intelligente in modo che possano avere senso per un utente finale.
Ma continuo a sostenere che questa presentazione di problemi a un utente è una responsabilità del livello dell'applicazione, non del livello del database.