La instrucción INSERT ON DUPLICATE KEY UPDATE está disponible en MySQL como una extensión de la instrucción INSERT. Cada vez que se inserta una nueva fila en una tabla en caso de que la fila provoque una entrada duplicada en el índice ÚNICO o CLAVE PRINCIPAL, MySQL arrojará un error.
Cuando se define la opción ON DUPLICATE KEY UPDATE en la declaración INSERT, las filas existentes se actualizan con los nuevos valores en su lugar.
Sintaxis:
INSERT INTO table (column_names) VALUES (values) ON DUPLICATE KEY UPDATE col1 = val1, col2 = val2 ;
Junto con la instrucción INSERT, la instrucción ON DUPLICATE KEY UPDATE define una lista de asignaciones de columnas y valores en caso de duplicación.
Cómo funciona:
la declaración primero intenta insertar una nueva fila en la tabla. Cuando se produce un error de entrada duplicada, MySQL actualizará la fila existente con el valor especificado en la cláusula ON DUPLICATE KEY UPDATE.
Ejemplo:
creemos una tabla llamada ‘geek_demo’ de la siguiente manera.
CREATE TABLE geek_demo ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) );
Insertando datos en geek_demo :
INSERT INTO geek_demo (name) VALUES('Neha'), ('Nisha'), ('Sara') ;
Lectura de datos de la tabla:
SELECT id, name FROM geek_demo;
Producción :
identificación | nombre |
---|---|
1 | neha |
2 | Nisha |
3 | Sara |
Ahora, se insertará una fila en la tabla.
INSERT INTO geek_demo(name) VALUES ('Sneha') ON DUPLICATE KEY UPDATE name = 'Sneha';
Como no había ningún duplicado, MySQL inserta una nueva fila en la tabla. La salida de la declaración anterior es similar a la siguiente declaración de salida de la siguiente manera.
INSERT INTO geek_demo(name) VALUES ('Sneha');
Lectura de datos:
SELECT id, name FROM geek_demo;
Producción :
identificación | nombre |
---|---|
1 | neha |
2 | Nisha |
3 | Sara |
4 | sneha |
Insertemos una fila con un valor duplicado en la columna id de la siguiente manera.
INSERT INTO geek_demo (id, name) VALUES (4, 'Mona') ON DUPLICATE KEY UPDATE name = 'Mona';
A continuación se muestra la salida:
2 row(s) affected
Debido a que ya existe una fila con id 4 en la tabla geek_demo, la instrucción actualiza el nombre de Sneha a Mona.
Lectura de datos:
SELECT id, name FROM geek_demo;
Producción :
identificación | nombre |
---|---|
1 | neha |
2 | Nisha |
3 | Sara |
4 | mona |
Publicación traducida automáticamente
Artículo escrito por khushboogoyal499 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA