2
respostas

Como fazer a constraint do CPF para o banco?

Na aplicação, em nível de código pode-se usar a biblioteca "CPF/CNPJ validation" né? Mas como faz para aplicar isso no nível do banco? No caso o banco é "SQLite"

Pedi pro ChatGPT e não sei se é assim ou ele deu uma viajada. Não consegui colar aqui, pois ultrapassa o limite de caracteres. Tem algum jeito de colar aq ou fazer de outro jeito para alguém ver aq?

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
2 respostas

Olá, Luidi! Como vai?

Para aplicar uma constraint de CPF diretamente no banco de dados SQLite, você pode criar um trigger que verifica se o CPF é válido antes de inserir ou atualizar um registro. No entanto, vale lembrar que o SQLite tem algumas limitações em relação a funções complexas, então a validação completa do CPF pode ser mais desafiadora de implementar diretamente no banco.

Aqui está um exemplo básico de como você poderia configurar um trigger para verificar o formato do CPF (considerando apenas a estrutura numérica e o tamanho):

CREATE TRIGGER validate_cpf
BEFORE INSERT ON sua_tabela
FOR EACH ROW
BEGIN
  SELECT
    CASE
      WHEN LENGTH(NEW.cpf) != 11 OR NEW.cpf NOT GLOB '[0-9]*' THEN
        RAISE(ABORT, 'CPF inválido')
    END;
END;

Este exemplo básico verifica se o CPF possui exatamente 11 dígitos e se todos são numéricos. Para uma validação completa, que verifica os dígitos verificadores do CPF, você pode precisar fazer essa lógica no nível da aplicação, como você mencionou, utilizando uma biblioteca de validação de CPF.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Então não tem como fazer uma validação completa do CPF usando o SQLite por ser muito simples e ter limitações? Como posso testar a contraint sem ser pela aplicação para ver se funciona?