REPLACE
esegue internamente un'eliminazione e quindi un inserimento. Ciò può causare problemi se si dispone di un vincolo di chiave esterna che punta a quella riga. In questa situazione il REPLACE
potrebbe fallire o peggio:se la tua chiave esterna è impostata per l'eliminazione a cascata, il REPLACE
causerà l'eliminazione delle righe di altre tabelle. Questo può accadere anche se il vincolo è stato soddisfatto sia prima che dopo il REPLACE
operazione.
Usando INSERT ... ON DUPLICATE KEY UPDATE
evita questo problema ed è quindi preferito.