Al sincronizar tablas o bases de datos, algunas veces es útil tener una forma para actualizar una fila si ya hay una entrada para una clave.
Utilizando la sintaxis de MySQL, ON DUPLICATE KEY UPDATE es posible insertar una fila, si esta no existe, o actualizarla si es que ya existe:
id,
text,
sync_time
) VALUES (
1,
'new',
UNIX_TIMESTAMP()
) ON DUPLICATE KEY UPDATE
text = VALUES(text),
sync_time = VALUES(sync_time)
Para actualizar tabla1 con todo los datos de tabla2, se puede hacer con una sola consulta sin necesidad de programar ninguna lógica:
(SELECT id, text, sync_time FROM tabla2)
ON DUPLICATE KEY UPDATE
text = VALUES(text),
sync_time = VALUES(sync_time)
Vía: Code Spatter


Greg
mayo 7, 2008
Thanks for the link back and for the translation.
Richard
junio 8, 2008
Exelente, necesitaba esto