1
resposta

[Dúvida] INSERT INTO PRODUTOS - restrição exclusiva

ao tentar realizar o insert feito no time 08:25 da aula 5, é exibido a mensagem de erro abaixo, entretanto não consegui solucionar, mesmo utilizando os exatos comandos da aula

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

Mesmo que eu utilize a opção de bloquear exclusivamente o produto de código 1040107, afinal ele é o único igual entre as tabelas, o erro de restrição exclusiva é apresentado:

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

Algo que notei, é que os tipos de dados das tabelas diferenciam-se nem todas as colunas exceto preco_de_lista / preco_lista, aonde todas as colunas da tabela tabela_de_produtos_fonte é nvarchar 2, enquanto na tabela produtos é varchar 2 (com tamanhos diferentes também)

1 resposta

Olá, Philippe, tudo bem?

Esse erro está relacionado à tentativa de inserir um registro com um código que já existe na tabela PRODUTOS, o que viola a restrição de chave primária.

Para evitar inserir registros duplicados, você pode modificar o comando INSERT para excluir os códigos que já existem na tabela PRODUTOS. Como mostro abaixo:

INSERT INTO PRODUTOS (CODIGO, DESCRITOR, PRECO_LISTA, TAMANHO, EMBALAGEM, SABOR)
SELECT CODIGO_DO_PRODUTO AS CODIGO,
       NOME_DO_PRODUTO AS DESCRITOR,
       PRECO_DE_LISTA AS PRECO_LISTA,
       TAMANHO,
       EMBALAGEM,
       SABOR
FROM TABELA_DE_PRODUTOS_FONTE
WHERE CODIGO_DO_PRODUTO NOT IN (
    SELECT CODIGO FROM PRODUTOS
);

Esse comando irá inserir apenas os produtos que ainda não existem na tabela PRODUTOS. Execute o comando ajustado e veja se o erro persiste.

Espero ter ajudado.

Qualquer dúvida, não hesite em compartilhar no fórum.

Abraços!

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