Quais são as diferenças práticas entre `REPLACE` e` INSERT ... ON DUPLICATE KEY UPDATE` no MySQL?
O que eu preciso é definir os valores de todos os campos de um registro com uma chave específica (a chave é composta de fato), inserindo o registro se ainda não houver um registro com essa chave.
REPLACE
parece ter o objetivo de fazer o trabalho, mas ao mesmo tempo sua página de manual sugereINSERT ... ON DUPLICATE KEY UPDATE
.
Qual deles devo escolher melhor e por quê?
O único "efeito colateral" deREPLACE
que me ocorre é que aumentaria os valores de incremento automático (felizmente eu não uso nenhum) enquantoINSERT ... ON DUPLICATE KEY UPDATE
provavelmente não. Quais são as outras diferenças práticas a serem consideradas? Em que casos específicosREPLACE
ser preferível aINSERT ... ON DUPLICATE KEY UPDATE
e vice versa