Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Criar se uma entrada não existir, caso contrário atualizar?


Muitos desenvolvedores ainda executam uma consulta para verificar se um campo está presente em uma tabela e depois executam uma consulta de inserção ou atualização de acordo com o resultado da primeira consulta. Tente usar a sintaxe ON DUPLICATE KEY, isso é muito mais rápido e melhor em seguida, executando 2 consultas. Mais informações podem ser encontradas aqui

se você quiser manter o mesmo valor para c você pode fazer uma atualização com o mesmo valor

a diferença entre 'substituir' e 'na chave duplicada':

se sua tabela não tiver uma chave primária ou chave exclusiva, a substituição não fará sentido.

Você também pode usar os VALUES função para evitar ter que especificar os valores reais duas vezes. Por exemplo. ao invés de

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=6;

você pode usar

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);

Onde VALUES(c) avaliará o valor especificado anteriormente (6).