Cambiar INSERT por UPDATE para claves duplicadas

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:

INSERT INTO tabla1 (
    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:

INSERT INTO tabla1 (id, text, sync_time)
(SELECT id, text, sync_time FROM tabla2)
ON DUPLICATE KEY UPDATE
    text        = VALUES(text),
    sync_time   = VALUES(sync_time)

Vía: Code Spatter

2 comentario en este artículoDeje el suyo
  1. Thanks for the link back and for the translation.

  2. Exelente, necesitaba esto :D

Deje su comentario

Por favor, ingrese su nombre

Por favor, ingrese un correo-e válido

Por favor, ingrese su mensaje

luauf.com 2012

WordPress