1
resposta

eRRO DE DEPLICAÇÃO DO CODIGO.

NO EXERCICIO AO RECUPERAR A TABELA E INSERIR OS VALORES DE UMA TABELA A OUTRA TABELA. EX.:

Msg 2627, Level 14, State 1, Line 4
Violação da restrição PRIMARY KEY 'PK__PRODUTOS__CC87E12781F35542'. Não é possível inserir a chave duplicada no objeto 'dbo.PRODUTOS'. O valor de chave duplicada é (1000889).
A instrução foi finalizada.

Completion time: 2025-05-06T13:35:08.5659880+01:00

DEU O ERRO DE DUPLICAÇÃO DE CODIGO. ALL RIGHT.

E AO SOLUCIONAR O ERRO DA DUPLICAÇÃO.

INSERT INTO PRODUTOS 
    SELECT CODIGO_DO_PRODUTO AS CODIGO, NOME_DO_PRODUTO AS DESCRITOR, 
    SABOR, TAMANHO, EMBALAGEM, PRECO_DE_LISTA AS PRECO_LISTA 
FROM SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS 
WHERE CODIGO_DO_PRODUTO <> '1040107';

QUI FOI UM CASO DE UMA DUPLICAÇÃO VISTA A OLHO. EM UM DADOS DE EXEMPLO. 50MIL E VARIOS CODIGOS DERAM DUPLICIDADE, COMO RESOLVER?

1 resposta

Olá Leandro, tudo bem?

Quando a chave primária já está presente na tabela de destino, o SQL Server não permite a inserção de registros duplicados, resultando no erro que você mencionou.

Para resolver esse problema, uma abordagem é garantir que você está apenas inserindo registros que ainda não existem na tabela de destino. Uma opção é usar a cláusula NOT EXISTS para verificar se o registro já está presente na tabela PRODUTOS antes de tentar inseri-lo. Po exemplo:

INSERT INTO PRODUTOS (CODIGO, DESCRITOR, SABOR, TAMANHO, EMBALAGEM, PRECO_LISTA)
SELECT CODIGO_DO_PRODUTO, NOME_DO_PRODUTO, SABOR, TAMANHO, EMBALAGEM, PRECO_DE_LISTA
FROM SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS
WHERE NOT EXISTS (
    SELECT 1 
    FROM PRODUTOS 
    WHERE PRODUTOS.CODIGO = SUCOS_FRUTAS.DBO.TABELA_DE_PRODUTOS.CODIGO_DO_PRODUTO
);

Assim, o SQL Server verifica cada registro da tabela de origem e só insere aqueles cujo código ainda não está presente na tabela PRODUTOS.

Espero ter ajudado.

Qualquer dúvida que surgir, compartilhe no fórum.

Abraços e bons estudos!

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