Mysql
 sql >> Database >  >> RDS >> Mysql

Quali sono le differenze pratiche tra `REPLACE` e `INSERT ... ON DUPLICATE KEY UPDATE` in MySQL?

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.