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')