INSERT INTO … ON DUPLICATE KEY UPDATE
funciona de esta manera:
- intenta insertar una fila como de costumbre
- si ocurre alguna violación de restricción en alguna columna, ejecuta
UPDATE
declaración en la fila existente con la queINSERT
declaración en conflicto
Eso simplemente significa que si UPDATE
declaración sola sería exitosa, es ON DUPLICATE KEY UPDATE
equivalente también funcionará. Eso significa que obviamente no puedes violar ninguna restricción en el UPDATE
declaración, o todo fallará (por ejemplo, intentar establecer un valor en un UNIQUE
columna que ya existe en otra fila).
Si establece el mismo valor en la misma columna nuevamente, eso es esencialmente un no-op. El valor en la columna no cambia y, por lo tanto, tampoco puede causar ningún error (supongamos que no tiene ningún BEFORE UPDATE
realmente funky desencadenantes que pueden comportarse mal). El número de columnas es irrelevante aquí, puede cambiar tantas o tan pocas en una declaración como desee.