Insertar en una tabla MySQL o actualizar si existe

Resuelto Keshan asked hace 14 años • 13 respuestas

Quiero agregar una fila a una tabla de base de datos, pero si existe una fila con la misma clave única, quiero actualizar la fila.

Por ejemplo:

INSERT INTO table_name (ID, NAME, AGE) VALUES(1, "A", 19);

Digamos que la clave única es IDy en mi base de datos hay una fila con ID = 1. En ese caso, quiero actualizar esa fila con estos valores. Normalmente esto da un error.
Si lo uso INSERT IGNORE, ignoraré el error, pero aún así no se actualizará.

Keshan avatar Nov 17 '10 21:11 Keshan
Aceptado

UsarINSERT ... ON DUPLICATE KEY UPDATE

CONSULTA:

INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
name="A", age=19
Donnie avatar Nov 17 '2010 14:11 Donnie

Verificar REPLACE:

REPLACEfunciona exactamente igual INSERT, excepto que si una fila antigua de la tabla tiene el mismo valor que una fila nueva para un índice PRIMARY KEYo un UNIQUEíndice, la fila anterior se elimina antes de insertar la nueva fila.

Ejemplo:

REPLACE INTO `tablename` (`id`, `name`, `age`) VALUES (1, "A", 19)
Martin Schapendonk avatar Nov 17 '2010 14:11 Martin Schapendonk

Cuando utilice la inserción por lotes, utilice la siguiente sintaxis:

INSERT INTO TABLE (id, name, age) VALUES (1, "A", 19), (2, "B", 17), (3, "C", 22)
ON DUPLICATE KEY UPDATE
    name = VALUES (name),
    ...
Fabiano Souza avatar Jan 27 '2017 12:01 Fabiano Souza