2
respostas

Erro no exercício.

Inclua todos os clientes na tabela CLIENTES baseados nos registros da tabela TABELA DE CLIENTES, da base SUCOS_FRUTAS.

Dica: cuidado com os nomes dos campos e lembre-se que já incluímos 3 clientes na nossa tabela, pelo exercício anterior.

Ver opinião do instrutor Opinião do instrutor

Para responder o desafio proposto, podemos fazer o que foi pedido no enunciado executando o seguinte comando SQL:

INSERT INTO CLIENTES SELECT CPF, NOME, ENDERECO_1 AS ENDERECO, BAIRRO, CIDADE, ESTADO, CEP, DATA_DE_NASCIMENTO AS DATA_NASCIMENTO, IDADE, GENERO, LIMITE_DE_CREDITO AS LIMITE_CREDITO, VOLUME_DE_COMPRA AS VOLUME_COMPRA, PRIMEIRA_COMPRA FROM SUCOS_FRUTAS.DBO.TABELA_DE_CLIENTES;

meu codigo. INSERT INTO CLIENTES SELECT CPF, NOME, ENDERECO_1 AS ENDERECO, BAIRRO, CIDADE, ESTADO, CEP, DATA_DE_NASCIMENTO AS DATA_NASCIMENTO, IDADE, GENERO, LIMITE_DE_CREDITO AS LIMITE_CREDITO, VOLUME_DE_COMPRA AS VOLUME_COMPRA, PRIMEIRA_COMPRA FROM SUCOS_FRUTAS.dbo.TABELA_DE_CLIENTES;

so que estou com um erro. Msg 2627, Level 14, State 1, Line 5 Violação da restrição PRIMARY KEY 'PK__CLIENTES__C1F89730E888D7E5'. Não é possível inserir a chave duplicada no objeto 'dbo.CLIENTES'. O valor de chave duplicada é (19290992743). A instrução foi finalizada.

Completion time: 2025-05-06T15:47:09.5189770+01:00

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

MESMO USANDO ESTE CODIGO ME DA ERRO.:

INSERT INTO CLIENTES SELECT CPF, NOME, ENDERECO_1 AS ENDERECO, BAIRRO, CIDADE, ESTADO, CEP, DATA_DE_NASCIMENTO AS DATA_NASCIMENTO, IDADE, GENERO, LIMITE_DE_CREDITO AS LIMITE_CREDITO, VOLUME_DE_COMPRA AS VOLUME_COMPRA, PRIMEIRA_COMPRA FROM SUCOS_FRUTAS.dbo.TABELA_DE_CLIENTES WHERE CPF <> '1471156710';

Será que está tendo problema referente ao nome que é acentuado e o outro não. E como resolvo.

2 respostas

CONSEGUI RESOLVER O PROBLEMA. COLOQUEI UMA CONDISÃO SE CASO NÃO EXISTE NA TABELA CLIENTES. DESTA FORMA FUNCIONOU.

INSERT INTO CLIENTES SELECT CPF, NOME, ENDERECO_1 AS ENDERECO, BAIRRO, CIDADE, ESTADO, CEP, DATA_DE_NASCIMENTO AS DATA_NASCIMENTO, IDADE, GENERO, LIMITE_DE_CREDITO AS LIMITE_CREDITO, VOLUME_DE_COMPRA AS VOLUME_COMPRA, PRIMEIRA_COMPRA FROM SUCOS_FRUTAS.dbo.TABELA_DE_CLIENTES WHERE CPF <> '1471156710' AND CPF NOT IN (SELECT CPF FROM CLIENTES);

Oi, Leandro, tudo bem?

Sobre sua dúvida, o erro que você encontrou ocorre porque a tabela CLIENTES possui uma restrição de chave primária, o que significa que não é possível inserir registros com CPF duplicado. Como você já havia inserido alguns clientes anteriormente, o SQL está tentando adicionar um CPF que já existe, resultando na violação da chave primária.

A solução que você encontrou está correta! Ao adicionar a condição AND CPF NOT IN (SELECT CPF FROM CLIENTES), você está evitando que o SQL insira CPFs já existentes na tabela, o que resolve o erro de duplicidade. Esse tipo de filtro é uma ótima forma de garantir que os dados sejam inseridos sem conflitos.

Obrigada por compartilhar no fórum! Com certeza poderá ajudar outros alunos!

Continue assim!

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!