Valores inválidos no SQL? CHECK a sua integridade

Valores inválidos no SQL? CHECK a sua integridade
Guilherme Silveira
Guilherme Silveira

Compartilhe

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

:(

Banner promocional da Alura, com chamada para um evento ao vivo no dia 12 de fevereiro às 18h30, com os dizeres

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 artigo!


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

Co-fundador da Alura, da Caelum e do GUJ. Com 18 anos de ensino nas áreas de programação e dados, criou mais de 100 cursos. Possui formação em engenharia de software, viés matemático e criativo, além de ser medalhista de ouro em competições nacionais de computação, tendo representado o Brasil nos mundiais. Participante de comunidades open source e de educação em tecnologia, tendo escrito 7 livros. Faz mágica e fala coreano no tempo livre.

Veja outros artigos sobre Data Science