sql >> Base de Datos >  >> RDS >> Mysql

INSERTAR EN... AL DUPLICAR ACTUALIZAR todos los valores

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 que INSERT 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.