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.