De acordo com a documentação , a diferença é:
Então o que ele faz:
- Tente corresponder a linha usando um dos índices disponíveis;
- Se a linha ainda não existir:adicione uma nova;
- Se a linha já existir:exclua a linha existente e adicione uma nova depois.
Quando usar isso pode ser útil em
insert
separado e update
declarações? - Você pode chamar isso com segurança e não precisa se preocupar com as linhas existentes (uma instrução versus duas);
- Se você quiser que os dados relacionados sejam removidos ao
insert
/updating
, você pode usarreplace
:exclui todos os dados relacionados também); - Quando os acionadores precisam ser acionados e você espera um
insert
(motivo ruim, ok).