INSERTAR EN ACTUALIZACIÓN DE CLAVE DUPLICADA en MySQL

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *