ATUALIZAÇÕES CONDICIONAIS para INSERT ... ON DUPLICATE KEY
Inserir ou atualizar registros com base em condições de chave duplicadas é um cenário comum na programação de banco de dados . No entanto, às vezes pode ser necessário restringir ainda mais a condição de atualização, tornando-a dependente de critérios adicionais. Infelizmente, a sintaxe INSERT ... ON DUPLICATE KEY UPDATE não oferece suporte nativo a cláusulas WHERE para atualizações condicionais.
Superando a limitação
Para contornar essa limitação, você pode utilizar a função IF() dentro da cláusula UPDATE. A função IF() permite que você especifique um valor alternativo com base em uma determinada expressão lógica.
Exemplo de Implementação
Considere o seguinte INSERT ... ON DUPLICATE KEY UPDATE consulta:
INSERT INTO daily_events (created_on, last_event_id, last_event_created_at) VALUES ('2010-01-19', 23, '2010-01-19 10:23:11') ON DUPLICATE KEY UPDATE last_event_id = IF(last_event_created_at < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
Nesta consulta, a cláusula UPDATE contém uma instrução IF() que verifica se o valor last_event_created_at existente é menor que o valor sendo inserido. Caso o valor existente seja mais antigo, a atualização será realizada, substituindo last_event_id pelo novo valor. Caso contrário, o last_event_id existente será preservado.
Considerações adicionais
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3