Dica – Executar um INSERT somente se o registro não existir

Em algumas situações em projetos de banco de dados MySQL / MariaDB precisamos consultar com um SELECT se um determinado registro já existe no banco de dados antes de executarmos um INSERT.

Isso se torna ainda mais trabalhoso se tivermos que tratar isso em um sistema de informação, criar códigos para verificar isso pode ser tedioso e gera uma carga de testes desnecessária não é verdade?

A solução de hoje é aplicar o uso da função IGNORE junto ao comando INSERT

IMPORTANTE: Esta é uma solução paliativa, ela não deve ser usada se você tiver regras bem definidas em seu banco de dados, na maioria dos casos uma consulta seguida de uma inserção ainda é mais segura.

Exemplo prático

Temos a seguinte tabela;
Considere que o campo produto_cod_barras é chave primária.

Suponhamos que já tenhamos inserido o produto de código de barras 6874257581841 já tenho sido inserido no banco, temos o código;

INSERT INTO tb00_produtos
(produto_cod_barras, produto_nome, produto_preco, produto_qtd) 
VALUES 
('6874257581841', 'Produto qualquer', '25.60', '1.00')

Se tentarmos executar o mesmo código duas vezes temos o erro de chave duplicada. Para escapar da mensagem do erro podemos usar um IGNORE

INSERT IGNORE INTO tb00_produtos 
(produto_cod_barras, produto_nome, produto_preco, produto_qtd) 
VALUES 
('6874257581841', 'Produto qualquer', '25.60', '1.00')
dica de SQLingorar registro duplicado na tabelainserir dados somente se o registro não existirinsert sem select