Existe uma maneira de enviar uma mensagem de erro amigável sobre violação de restrição
Diz que tenho colunaGender
e restriçãoCHECK( Gender IN ('F', 'M', 'OTHER'))
.
Se esqueci acidentalmente de lidar com isso no lado do cliente, o usuário verá algo comoORA-02290: check constraint (SYS_C099871244) violated
que não é muito útil nem para o usuário nem para o desenvolvedor que mantém ou depura
xiste uma maneira de fornecer mensagens definidas pelo desenvolvedor, como (pseudo) Java deassert Gender IN (0,1):'Gender must be F or M'
A única maneira de pensar é mover restrições para o gatilho ANTES DE ATUALIZAR OU ATUALIZAR Raise_Application_Error( code, my_message )
. Mas eu não gosto disso
EDITA Lista de razões específicas, conforme nos comentários
1. Eu realmente gosto de manter a lógica o mais próxima possível dos dados
2. Para o usuário final, a mensagem Raise_Application_Error é indistinguível da mensagem do aplicativo
3. Os desenvolvedores verão uma boa mensagem, mesmo que os dados de acesso sejam ignorados pelo aplicativo
4. mover restrições para gatilhos é feio (é?), então eu tenho que achar algo diferente de Raise_Application_Error
EDIT2,5 anos depois, e depois que deixei o emprego relacionado ao banco de dados, finalmente me ocorreu o que realment não gosto disso - duplicação de código. Eu tenho que repetir exatamente a mesma lógica no servidor e no lado do cliente. Provavelmente, em 2 idiomas diferentes. E mantenha-os sincronizados. Isso é fei
Embora as respostas indiquem claramente, não há nada que eu possa fazer sobre isso. Então chegou a hora de eu ser um bom cidadão e finalmente aceitar uma resposta (desculpe, esqueci-me disso).