MySQL Insert Ignore Duplicate Key

Mysql Insert Ignore Duplicate Key



Freqüentemente, há dados conflitantes em tabelas ou conjuntos de resultados. Também consome tempo para corrigir, e registros frequentemente repetidos precisam ser evitados. É necessário identificar registros duplicados e excluí-los de qualquer uma das tabelas. Esta seção irá elaborar sobre como evitar que dados duplicados apareçam dentro de uma tabela e como eliminar os registros duplicados atuais. Neste guia, você aprenderá a usar a cláusula INSERT IGNORE para evitar o erro.

Sintaxe:

Aqui está a sintaxe para a consulta INSERT IGNORE.







>>INSERT IGNORE INTO table_name(col1, col2, col3)VALORES(value_list),(value_list),(value_list);

INSERT IGNORE via Workbench:

Abra o MySQL Workbench 8.0 do seu sistema e conecte-o à instância do banco de dados.





Na área de comando, você deve criar uma tabela Employee com quatro colunas onde uma delas deve ser especificada como UNIQUE. Experimente a consulta abaixo na área de consulta do navegador para criar esta tabela. Selecione toda a consulta e clique no sinal de flash para executá-la.





>>CRIAR TABELA Funcionário(ID int PRIMARY KEY NOT NULL, Name varchar(cinquenta)NÃO NULO, Idade Varchar(cinquenta), Salário varchar(cinquenta), EXCLUSIVO(EU IRIA));

Após a criação, você pode encontrar o funcionário da tabela na lista na opção de Tabelas abaixo dos dados do banco de dados.



Na visualização em grade, você pode inserir os registros sem digitar nenhuma consulta. Portanto, abra a visualização em grade do funcionário da mesa e adicione alguns registros como mostrado abaixo. Entramos em todos os registros únicos sem duplicatas. Clique no botão ‘Aplicar’ para aplicar as alterações.

Uma nova janela será aberta com as consultas relevantes relacionadas aos registros que inserimos acima. Essa tela pode ser chamada de tela de revisão. Se você quiser mudar algo, pode fazê-lo aqui. Caso contrário, clique no botão Aplicar para executar as consultas.

Como você pode ver, a consulta foi executada com sucesso e os registros são salvos no banco de dados e em sua tabela Employee. Teria gerado um erro se tivéssemos adicionado qualquer valor duplicado no ID da coluna. Toque no botão Concluir.

Isso era tudo sobre a visualização em grade. Agora, estaremos inserindo registros por meio da área de consulta. Enquanto isso, temos inserido registros duplicados desta vez para verificar a saída. Então, tentamos a consulta INSERT abaixo, onde temos duas listas de valores. Ambas as listas de valores têm o mesmo valor na coluna ‘ID’. Selecione a consulta e aperte o sinal de flash para executar a consulta.

A consulta não funcionará corretamente e gerará um erro devido aos valores duplicados no comando INSERT conforme mostrado na imagem.

Agora tente a mesma consulta acima com a cláusula INSERT IGNORE e execute-a conforme apresentado.

Você pode ver que isso não gera um erro na área de saída, mas dá um aviso de que o comando contém valores duplicados.

Atualize a visualização em grade da tabela Employee. A consulta INSERT IGNORE funcionou pela metade. Ele inseriu a primeira lista de valores na tabela, mas a segunda lista de valores foi ignorada devido ao valor repetido 13.

INSERT IGNORE via Command-Line Shell:

Para entender esse conceito, vamos abrir o shell do cliente de linha de comando do MySQL em seu sistema. Ao perguntar, digite sua senha do MySQL para começar a trabalhar nisso.

Agora é hora de criar uma mesa. Experimente o comando abaixo para fazer isso. Criamos uma tabela chamada ‘ministro’, enquanto uma de suas colunas tem uma restrição UNIQUE. É claro que o ID da coluna aceitará apenas os valores únicos e não os valores duplicados.

>>CRIAR TABELA data.minister(Mid INT PRIMARY KEY UNIQUE NOT NULL, Name VARCHAR(Quatro cinco), Cidade VARCHAR(Quatro cinco));

A consulta funciona adequadamente e a tabela foi criada. Para entender a cláusula INSERT IGNORE, você deve primeiro ver o funcionamento do comando INSERT simples. Se você estiver usando o comando INSERT para inserir vários dados de informação em uma tabela, o MySQL suspende a transação e gera uma exceção se ocorrer um erro durante o processamento. Como consequência, a tabela não tem nenhuma linha adicionada a ela. Vamos inserir o primeiro registro na tabela minister usando a consulta mostrada abaixo. A consulta funcionará com sucesso porque a tabela está em branco no momento e não há nenhum registro para comparar.

Como o ID da coluna é ÚNICO, quando tentamos a instrução abaixo no shell da linha de comando, um erro será gerado. Isso ocorre porque adicionamos o valor 11 na consulta anterior e, devido à chave UNIQUE, ela não nos permite adicionar o valor repetido novamente.

Portanto, ao verificar a tabela, podemos ver que a tabela possui apenas 1 registro adicionado pela primeira consulta INSERT.

>>SELECIONE*FROM data.minister;

Por outro lado, se você estiver usando a cláusula INSERT IGNORE, as linhas de dados incorretas que acionam o erro serão ignoradas e inserirão apenas as precisas. No comando a seguir, usamos o comando INSERT IGNORE para evitar adicionar valores repetidos à tabela e ignorar o erro. Como você pode ver, a primeira lista de valores tem um valor 11 duplicado igual ao da consulta anterior. Embora a segunda lista de valores seja única, ela mostrará 1 registro inserido na tabela, que é a segunda lista de valores. O MySQL também indica que apenas 1 registro foi inserido e 1 aviso é gerado na mensagem. Você pode então assumir que, se estivermos usando a cláusula INSERT IGNORE, o MySQL fornecerá um aviso.

Como você pode ver na saída abaixo, temos apenas dois registros nesta tabela - a primeira lista de valores fornecida na consulta acima, que é esquecida.

>>SELECIONE*FROM data.minister;

Conclusão:

Fizemos todos os exemplos necessários de INSERT IGNORE em valores duplicados por meio do MySQL Workbench e do shell do cliente de linha de comando do MySQL.