(и обработчик ошибок будет наиболее информирован с точки зрения клиента данных - иногда для одного и того же кода ошибки может потребоваться другое представление, другое сообщение)

у меня есть колонкаGender и ограничениеCHECK( Gender IN ('F', 'M', 'OTHER')).
Если я случайно забуду обработать это на стороне клиента, пользователь увидит что-то вроде
ORA-02290: check constraint (SYS_C099871244) violated
что не очень полезно ни для пользователя, ни для разработчика, который поддерживает или отлаживает

Есть ли способ предоставить определенные разработчиком сообщения, такие как (псевдо) Java
assert Gender IN (0,1):'Gender must be F or M'

Единственный способ, о котором я могу думать, - это перенести ограничения на триггер BEFORE UPDATE OR INSERT, а при сбое выполнитьRaise_Application_Error( code, my_message ), Но мне это не нравится

РЕДАКТИРОВАТЬ Список конкретных причин, как в комментариях
1. Мне действительно нравится держать логику как можно ближе к данным
2. Для конечного пользователя сообщение Raise_Application_Error неотличимо от сообщения приложения
3. Разработчики увидят приятное сообщение, даже если доступ к данным в обход приложения
4. Перемещение ограничений на триггеры - это ужасно (правда?), Поэтому я должен найти что-то отличное от Raise_Application_Error

EDIT2 1,5 года спустя, и после того, как я оставил работу, связанную с БД, мне наконец пришло в голову, что ядействительно не нравится об этом -дублирование кода, Я должен повторить ту же логику на сервере и на стороне клиента. Скорее всего, на 2 разных языках. И держать их в синхронизации. Это просто безобразно

Хотя, как ясно указывают ответы, я ничего не могу с этим поделать. Поэтому мне пора стать хорошим гражданином и, наконец, принять ответ (извините, просто забыл об этом).

Ответы на вопрос(4)

Ваш ответ на вопрос