Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FabianoSouza

Permitir faixa de valores num campo

Recommended Posts

Preciso que um campo do tipo Int da tab aceite apenas valores compreendidos entre "X" e "Y" (entre 1 e 15, o meu caso).

Como faço isso? Com constraint? Expressão regular?? Função?

Alguém tem um código que possa ajudar?

 

 

 

Obrigado.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas o nocheck fará com que a constraint seja criada sem verificar o conteúdo da tabela , se houver um '16' será aceito só dará erro em um update de outra coluna desre registro por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como seria para criar a constraint de forma que ela verificasse o conteúdo da tabela?

Fazendo um select junto?

 

Eu criei com o código acima. Parece que está ok, ocorre erro se eu tentar inserir ou alterar com valor fora da faixa.

 

 

Logo mais precisarei passar para a aplicação este critério da constraint.

Precisarei do valor mínimo e o valor máximo. Qual seria o caminho? Select na constraint?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Como seria para criar a constraint de forma que ela verificasse o conteúdo da tabela?

 

 

Suprime a clausula WITH NOCHECK

 

 

Logo mais precisarei passar para a aplicação este critério da constraint.

Precisarei do valor mínimo e o valor máximo. Qual seria o caminho? Select na constraint?

 

 

 

Não entendi uma vez criada a constriant qualquer tentativa de gravação que a viole provoca um erro na aplicação, o que se pode (e deve) fazer é tratar o erro e mandar uma mensagem "limpa" para o usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em relação "recuperar os parâmetros" da constraint seria o seguinte.

 

A regra da constraint diz, "grave valores entre 1 e 15".

Seria interessante disponibilizar ao usuário essa mesma faixa de valores quando for criar um registro.

Dessa forma, se mudar a faixa de valores na constraint as opções do usuário também são atualizadas, facilitando

a vida e ajudando a manter a integridade dos dados.

 

Claro que poderia criar um combo na aplicação oferecendo estes valores ao usuário.

Mas se desse para oferecer na aplicação, de forma dinâmica, a mesma faixa de valores usada na constraint seria prático.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meio complicado de fazer me parece , mas em tese a app poderia ler a tabela de metadados e "pegar" a regra da constraint

 

Em geral se uso constraint quando não há domínio ou o domínio tem pouca chance de mudar , em outros casos pense em tabela de dominio e criei uma FK.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Em tese lendo a tabela de metadados daria para a aplicação montar isto.

 

Mas se existe um domínio o melhor é criar uma outra tabela e uma constraisnt de FK.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.