MySQL MariaDB

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, muitas vezes, registros repetidos precisam ser evitados. Identificar registros duplicados e excluí-los de qualquer uma das tabelas é necessário. Esta seção irá elaborar sobre como evitar que dados duplicados apareçam dentro de uma tabela e como eliminar 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 seu 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 “Funcionário” com quatro colunas onde uma delas deve ser especificada como “ÚNICA”. 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 (50) NOT NULL, Age Varchar (50), Salary varchar (50), UNIQUE (ID));

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

Na visualização em grade, você pode inserir os registros sem digitar nenhuma consulta. Então, abra a visualização em grade da tabela “funcionário” 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. Esta tela pode ser chamada de tela de “Revisão”. Se você quiser mudar alguma coisa, pode fazer 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 sua tabela “Funcionário”. Teria gerado um erro se tivéssemos adicionado qualquer valor duplicado na coluna “ID”. 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 exibido na imagem.

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

Você pode ver que ele 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 “Funcionário”. 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 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. Nós criamos uma tabela chamada 'ministro' enquanto uma de suas colunas tem uma restrição UNIQUE. É claro que a coluna “ID” aceitará apenas os valores únicos e não os valores duplicados.

>> CREATE TABLE data.ministro (Mid INT PRIMARY KEY UNIQUE NOT NULL, Nome VARCHAR (45), Cidade VARCHAR (45));

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 “ministro” 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 com.

Como a coluna “ID” é ÚNICA, quando tentamos a instrução abaixo no shell da linha de comando, ele irá gerar um erro. 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 * DOS dados.ministro;

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 corretas. No comando abaixo, estamos usando o comando INSERT IGNORE para evitar adicionar valores repetidos na tabela e ignorar o erro. Como você pode ver, a primeira lista de valores tem um valor duplicado “11” 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 * DOS dados.ministro;

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.

Como capturar e transmitir sua sessão de jogo no Linux
No passado, jogar era considerado apenas um hobby, mas com o tempo a indústria de jogos viu um grande crescimento em termos de tecnologia e número de ...
Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...
Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...