Tenho um trabalho para fazer e já que o professor tem fama de demorar um pouco a responder aos emails coloco aqui a minha pergunta...
Após a apresentação da minha base de dados para submissão, o professor irá tentar manipular a base de dados, tentando inserir informação incorrecta e tentará provocar inconsistências na informação lá presente. Como tal preciso de ter cuidado com muita coisa, e enquanto estava a aplicar restrições de integridade CHECK deparei-me com um pequeno dilema:
De acordo com o modelo que escolhi, tenho de guardar um MAC address, ou seja, é hexadecimal. A unica forma de guardar isto na base de dados é usar o comando varchar2 com 12 dígitos, mas isto permite que seja inserido qualquer caracter, e eu só quero permitir dígitos de 0 a 9 e letras de A a F (hexadecimal).
A questão é: como implementar isto através da cláusula CHECK? Tentei CHECK mac_address in ([0-9a-fA-F]*), mas não funcionou. Não apresenta um erro, mas qualquer tuplo que insira é bloqueado, com a mensagem de erro apontando para uma violação de restrição de integridade. Será impossível implementar através da cláusula check e devo usar um trigger para verificar isso antes de inserir um tuplo?