Estos meses he estado bastante ocupado trabajando, y es por lo mismo que no he escrito nada. Sin embargo, he estado atento a sus comentarios y aprobándolos cuando hay.
La solución propuesta hoy me surgió en un momento de extrema ociosidad y flojera, buscando una forma de hacerme la vida más fácil: alguien más tendría que haber tenido la duda de que era posible; en MySQL; insertar un registro, pero si éste registro ya estaba, actualizarlo sin tener que:
-
Hacer la consulta inicial
-
Verificar que exista
-
Actualizar el registro en vez de insertarlo
-
Revisar que se actualizó correctamente
Bueno, esto es posible, y es bastante fácil de implementar. Para saber cómo, siga leyendo :) La clave está en las palabras reservadas “INSERT … ON DUPLICATE KEY UPDATE” (disponibles a partir de MySQL 4.1.0) que le indican a MySQL los pasos a seguir en el caso que nuestro insert falló. Supongamos una simple tabla con la siguiente estructura:
Si deseáramos editar sus registros sin tener conocimiento previo de si está insertado o no pero a la vez manteniendo una sola consulta, se haría de la siguiente forma:
Así de fácil y así de simple. Por supuesto que aquí lo presento en su forma más básica y explicado con manzanitas, pero se puede complicar bastante, sobretodo considerando llaves únicas compuestas y actualizando varios campos (donde la única diferencia es que tenemos que separar los campos a actualizar con una coma). Para esos casos, por favor remítase a la fuente principal de donde saqué información para este artículo.
Fuente: MySQL.