A veces cuando vamos a insertar un elemento en base de datos nos interesa que dicho elemento, si es nuevo, se inserte, pero si ya existe en base de datos, que se haga un update para actualizarlo con los nuevos valores. MySQL nos ofrece dos posibilidades para esto.
La primera es REPLACE, que funciona exactamente igual que INSERT, pero con la peculiaridad de que si el elemento a insertar ya existe en la base de datos (se repite alguna de las KEY que debe ser única), entonces primero borra el elemento existente en base de datos y luego hace la inserción. Al hacerlo de esta manera, debemos dar valores a todos los campos de la tabla, que si no lo hacemos, perderemos los existentes previamente.
La segunda opción, es hacer un INSERT con un ON DUPLICATE. La inserción puede ser así
INSERT INTO tabla (columnas) VALUES (valores) ON DUPLICATE KEY UPDATE columna=valor, columna=valor, ...
Es decir, se hace un INSERT normal, pero se le añade la cláusula de que en caso de haber alguna KEY duplicada, entonces se haga un update de los campos que nos interesen.
- chuidiang's blog
- Login to post comments
