Скажем, у меня есть столбец Gender
и ограничение CHECK( Gender IN ('F', 'M', 'OTHER'))
.
Если я случайно забыл обработать это на стороне клиента, пользователь увидит smth, как, например,
ORA-02290: check constraint (SYS_C099871244) violated
который не очень полезен ни для пользователя, ни для разработчика, который поддерживает или отлаживает
Есть ли способ предоставить разработчику сообщение типа (псевдо) Java
assert Gender IN (0,1):'Gender must be F or M'
Единственный способ, с помощью которого я могу думать, это переместить ограничения на триггер ДОПОЛНЕНИЯ ИЛИ ВСТАВКИ и при неудаче сделать Raise_Application_Error( code, my_message )
. Но мне это не нравится
ИЗМЕНИТЬ
Список конкретных причин, как в комментариях
1. Мне очень нравится поддерживать логику как можно ближе к данным
2. Для конечного пользователя сообщение Raise_Application_Error неотличимо от сообщения приложения
3. Разработчики получат приятное сообщение, даже если данные доступа, минуя приложение
4. Перемещение ограничений на триггеры является уродливым (это?), Поэтому мне нужно найти smth, отличный от Raise_Application_Error
EDIT2 1,5 года спустя, и после того, как я покинул работу, связанную с db, мне, наконец, дошло, что мне действительно не нравится в этом - дублирование кода. Я должен повторить точно такую же логику на сервере и на стороне клиента. Скорее всего, на двух разных языках. И держите их в синхронизации. Это просто уродливо.
Хотя, как ясно показывают ответы, я ничего не могу об этом сказать. Поэтому мне нужно быть хорошим гражданином и, наконец, принять ответ (извините, просто забыл об этом).