Valores inválidos no SQL? CHECK a sua integridade

(Last Updated On: 7 de Março de 2017)

Promoção com viagem internacional por 5 reais? Ou ainda -5 reais? Tem campos que deveriam ser validados declarativamente, como o preço de um produto:

 
create table Produto
       (preco DECIMAL(10,2));

insert into Produto values (-5);

> Inserindo 1 linha de boa 

🙁

Que caca. Eu queria integridade dos meus dados. Queria que ele checasse por valores inválidos.

Manda o banco checar o valor:

alter table Produto add constraint 
preco_positivo check (preco > 0);

insert into Produto values (-5);

> Caca, preco_positivo não rolou.

MySQL ainda não suporta checks, bora aprender a usar Oracle? Postgre, SQL Server e outros também suportam 🙂

Seus dados possuem restrições que quer garantir a integridade no banco? Use o CHECK constraint.

Desafio: quero todos os livros ativos que estão baratos ou caros. Que caca eu fiz na query a seguir? Discutimos no próximo email!

select * from Livros where
  ativo = true and
  preco < 10 or preco > 1000;

Nos vemos no próximo episódio… nesse meio tempo, envie sua própria dica!

[mailmunch-form id=”175278″]

FIQUE POR DENTRO

Tech Education Leader no Alura

  • José Luiz Borges

    Rs… deverá separar a instrução SQL com “(“, se não irá ficar
    Todos livros ativos com preço menor que 10, ou todos livros com preço maior que 10

    select * from Livros where ativo = true and (preco < 10 or preco > 1000);

Próximo ArtigoVeja dicas de como elaborar um contrato de freelancer