(и обработчик ошибок будет наиболее информирован с точки зрения клиента данных - иногда для одного и того же кода ошибки может потребоваться другое представление, другое сообщение)
у меня есть колонкаGender
и ограничениеCHECK( Gender IN ('F', 'M', 'OTHER'))
.
Если я случайно забуду обработать это на стороне клиента, пользователь увидит что-то вродеORA-02290: check constraint (SYS_C099871244) violated
что не очень полезно ни для пользователя, ни для разработчика, который поддерживает или отлаживает
Есть ли способ предоставить определенные разработчиком сообщения, такие как (псевдо) Javaassert 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 разных языках. И держать их в синхронизации. Это просто безобразно
Хотя, как ясно указывают ответы, я ничего не могу с этим поделать. Поэтому мне пора стать хорошим гражданином и, наконец, принять ответ (извините, просто забыл об этом).