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

:(

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