junio 22, 2010 1

Insertar o actualizar registros en MySQL

By in General

En muchas ocasiones nos puede interesar insertar un registro o actualizarlo si este ya existe. Para hacer esto tenemos varias opciones, como por ejemplo estas dos:

Opción A:

  1. Comprobamos si el registro ya existe.
  2. Si no existe lo insertamos.
  3. Si existe lo actualizamos.

Opción B:

  1. Intentamos insertar el registro.
  2. Si se produce un error lo actualizamos.

Pero MySQL nos da una opción mucho más elegante para realizar esto. Se trata de utilizar la construcción ON DUPLICATE KEY UPDATE. Podemos ver la documentación de esta construcción en el manual de MySQL. Pero vamos a ver un par de ejemplos:

INSERT INTO tabla (a, b, c) VALUES (1, 2, 3)
ON DUPLICATE KEY UPDATE b=2, c=3

De esta forma si ya existe un registro con el valor del campo “a” igual a 1, suponiendo que el campo a sea la clave, se actualizarán los valores. ¿Y si tenemos varios registros? Entonces podemos usarlo de la forma siguiente:

INSERT INTO tabla (a, b, c) VALUES (1, 2, 3), (4, 5, 6)
ON DUPLICATE KEY UPDATE b=VALUES(b), c=VALUES(c)

De esta forma se cogerá los valores b=2 y c=3 para la clave a=1 y b=5 y c=6 para la clave a=4.

Comparte esta entrada:
Delicious Digg Google Technorati Menéame Fresqui Reddit Facebook Twitter Yahoo! Buzz MySpace Email BarraPunto

Tags: ,

One Response to “Insertar o actualizar registros en MySQL”

  1. Augusto dice:

    Me acabas de hacer el día!! No encontraba esta instrucción y quería hacerlo con el típico If exists(Select …) Then Update …. Else Insert….  del MS SQL para hacer respaldos manuales. De nuevo MUCHAS GRACIAS!!!!!!!!!

Leave a Reply