Enfim MySQL e MariaDB implementaram a CONSTRAINT CHECK

Olá, Hoje vamos escrever mais um pouco sobre restrições check em MySQL.

CONSTRAINT CHECK

O CONSTRAINT CHECK é um recurso de validação usado para restringir o intervalo de valores que pode ser usados em tabelas antes dos dos comandos Insert, Update serem aplicados no banco.

É possível aplicar CONSTRAINT CHECK em uma única coluna ou em varias colunas de uma tabela, podendo limitar os valores de determinadas colunas com base nos valores de outras colunas na mesma linha.

A sintaxe básica do CHECK varia um pouco para cada implementação de SGDB do mercado e recomendo que caso desejem usar CHECK leiam as documentações dos próprios bancos de dados neste post mostrarei como criar CHECK no MySQL.:

  • Criando CHECK no CREATE TABLE … CONSTRAINT ‘Name’ (Domain check) .
  • Criando CHECK em ALTER TABLE … ADD CONSTRAINT ‘Name’ (Domain check ).
  • Removendo CHECK em ALTER TABLE … DROP CONSTRAINT ‘Name’

Um pouquinho de história

“A motor do banco de dados MySQL é muito antigo, “O MySQL foi criado por Michael Widenius da companhia suíça TcX. Por volta de 1979 ,  então Michael desenvolveu um banco de dados chamado UNIREG, sendo reescritos em várias linguagens. Em 1994, a empresa TcX começou o desenvolvimento de aplicações baseadas na Web, tendo como base o banco UNIREG, porém esse banco possuía muito “overhead” para obter sucesso em uma aplicação para geração de páginas dinâmicas na Web. Então a empresa TcX começou a procurar por outro banco o mSQL, uma ferramenta baseada em SQL, mas com características pobres, não possuindo, por exemplo, suporte a índices, e com desempenho inferior ao UNIREG. “.

Mas somente após quase 40 anos de desenvolvimento a funcionalidade CONSTRAINT CHECK foi implementada.

Aplicação de um exemplo simples

Veja o exemplo no MariaDB, onde será criado uma restrição de valores maiores que zero para o valor id da tabela pessoa:

CREATE TABLE  `test`.`pessoa` (
  `id` int(11) NOT NULL,
  `nome` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`id`),
  CONSTRAINT `id deve ser maior que 0` CHECK (`id` > 0)
);

Veja a mensagem do erro: o banco de dados não aceita a gravação de um registro com id com valor menor ou igual a zero devido ao CHECK (`id` > 0)

Limitações

A função é suportada no MySQL 8.0.16,  MariaDB 10.2.1. Em versões inferiores o usuário até pode escrever a restrição na construção da tabela porém o MySQL guarda a restrição mas o banco simplesmente analisa e ignora essa funcionalidade.

Abraços e ate a próxima!
bom estudos!

fontes

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

WordPress.com.

Acima ↑

%d blogueiros gostam disto: