Lo que necesito es establecer los valores de todos los campos de un registro con una clave particular (la clave es realmente compuesta), insertando el registro si todavía no hay ningún registro con esa clave.¿Cuáles son las diferencias prácticas entre 'REEMPLAZAR' e 'INSERTAR ... EN ACTUALIZACIÓN DE LLAVE DUPLICADA' en MySQL?
REPLACE
parece estar destinado a hacer el trabajo, pero al mismo tiempo su página de manual sugiere INSERT ... ON DUPLICATE KEY UPDATE
.
¿Cuál de ellos debería elegir y por qué?
El único "efecto secundario" de REPLACE
que se me viene a la mente es que incrementaría los valores de autoincremento (afortunadamente no uso ninguno) mientras que INSERT ... ON DUPLICATE KEY UPDATE
probablemente no lo haría. ¿Cuáles son las otras diferencias prácticas a tener en cuenta? ¿En qué casos particulares se puede preferir REPLACE
sobre INSERT ... ON DUPLICATE KEY UPDATE
y viceversa?
INSERT ... ON DUPLICATE KEY UPDATE de hecho también incrementar el contador de incremento automático. No para que se actualice el registro, sino para el siguiente registro insertado. Entonces, si la ID más alta es 10 y usted hace una inserción duplicada, y luego inserta un nuevo valor único, la ID de esa fila se convertirá en 12. – marlar