Insertar MySQL Ignorar clave duplicada

Mysql Insert Ignore Duplicate Key



A menudo hay datos contradictorios en tablas o conjuntos de resultados. También lleva mucho tiempo corregirlo y, a menudo, es necesario evitar los registros repetidos. Es necesario identificar registros duplicados y eliminarlos de cualquier tabla. Esta sección explicará cómo evitar que aparezcan datos duplicados dentro de una tabla y cómo eliminar los registros duplicados actuales. En esta guía, aprenderá a utilizar la cláusula INSERT IGNORE para evitar el error.

Sintaxis:

Aquí está la sintaxis de la consulta INSERT IGNORE.







>>INSERT IGNORE INTO nombre_tabla(col1, col2, col3)VALORES(lista_valores),(lista_valores),(lista_valores);

INSERT IGNORE via Workbench:

Abra su MySQL Workbench 8.0 desde su sistema y conéctelo a la instancia de la base de datos.





En el área de comando, debe crear una tabla Empleado con cuatro columnas donde una de ellas debe especificarse como ÚNICA. Pruebe la siguiente consulta en el área de consulta del navegador para crear esta tabla. Seleccione toda la consulta y haga clic en el signo de flash para ejecutarla.





>>CREAR TABLA Empleado(ID int PRIMARY KEY NOT NULL, Nombre varchar(50)NO NULO, Edad Varchar(50), Salario varchar(50), ÚNICO(IDENTIFICACIÓN));

Tras la creación, puede encontrar el empleado de la tabla dentro de la lista en la opción de Tablas debajo de los datos de la base de datos.



En la vista de cuadrícula, puede ingresar los registros sin escribir ninguna consulta. Entonces, abra la vista de cuadrícula del empleado de la tabla y agregue algunos registros como se muestra a continuación. Hemos ingresado todos los registros únicos sin duplicados. Presione el botón 'Aplicar' para aplicar los cambios.

Se abrirá una nueva ventana con las consultas relevantes relacionadas con los registros que hemos ingresado arriba. Esta pantalla puede denominarse pantalla de revisión. Si quieres cambiar algo, puedes hacerlo aquí. De lo contrario, presione el botón Aplicar para ejecutar las consultas.

Como puede ver, la consulta se ha ejecutado con éxito y los registros se guardan en la base de datos y su tabla Empleado. Habría generado un error si hubiéramos agregado algún valor duplicado en el ID de columna. Toque el botón Finalizar.

Todo esto se trataba de la vista de cuadrícula. Ahora, insertaremos registros a través del área de consulta. Mientras tanto, hemos estado insertando registros duplicados esta vez para verificar la salida. Entonces, hemos probado la consulta INSERT a continuación, donde tenemos dos listas de valores. Ambas listas de valores tienen el mismo valor en la columna 'ID'. Seleccione la consulta y presione el signo de flash para ejecutar la consulta.

La consulta no funcionará correctamente y generará un error debido a los valores duplicados en el comando INSERT como se muestra en la imagen.

Ahora intente la misma consulta anterior con la cláusula INSERT IGNORE y ejecútela como se presenta.

Puede ver que no genera un error en el área de salida, pero da una advertencia de que el comando contiene valores duplicados.

Actualizar la vista de cuadrícula de la tabla Empleado. La consulta INSERT IGNORE ha funcionado a la mitad. Insertó la primera lista de valores en la tabla, pero la segunda lista de valores se ha ignorado debido al valor repetido 13.

INSERTAR IGNORE a través de la línea de comandos Shell:

Para comprender este concepto, abramos el shell del cliente de línea de comandos de MySQL en su sistema. Al preguntar, escriba su contraseña de MySQL para comenzar a trabajar en ella.

Ahora es el momento de crear una tabla. Pruebe el siguiente comando para hacerlo. Hemos creado una tabla llamada 'ministro', mientras que una de sus columnas tiene una restricción ÚNICA. Está claro que el ID de columna solo aceptará los valores únicos y no los valores duplicados.

>>CREAR TABLA data.minister(Mid INT PRIMARY KEY ÚNICO NO NULO, Nombre VARCHAR(45), Ciudad VARCHAR(45));

La consulta funciona correctamente y se ha creado la tabla. Para comprender la cláusula INSERT IGNORE, primero debe ver el funcionamiento del comando INSERT simple. Si está utilizando el comando INSERT para insertar varios datos de información en una tabla, MySQL suspende la transacción y genera una excepción si ocurre un error durante el procesamiento. Como consecuencia, la tabla no tiene filas agregadas. Insertemos el primer registro en la tabla ministro usando la consulta que se muestra a continuación. La consulta funcionará correctamente porque la tabla está actualmente en blanco y no hay ningún registro con el que contraparte.

Como el ID de la columna es ÚNICO, cuando probamos la siguiente instrucción en el shell de la línea de comandos, generará un error. Esto se debe a que agregamos el valor 11 en la consulta anterior y, debido a la clave ÚNICA, no nos permite agregar el valor repetido nuevamente.

Por lo tanto, al verificar la tabla, podemos ver que la tabla solo tiene 1 registro agregado por la primera consulta INSERT.

>>SELECCIONE*FROM data.minister;

Por el contrario, si está utilizando la cláusula INSERT IGNORE, las filas de datos incorrectas que desencadenan el error se pasarán por alto y solo se ingresarán las precisas. En el siguiente comando, hemos estado usando el comando INSERT IGNORE para evitar agregar valores repetidos en la tabla y pasar por alto el error. Como puede ver, la primera lista de valores tiene un valor duplicado 11 igual que en la consulta anterior. Si bien la segunda lista de valores es única, mostrará 1 registro insertado en la tabla, que es la segunda lista de valores. MySQL también indica que solo se ha insertado 1 registro y se genera 1 advertencia en el mensaje. Entonces puede suponer que si estamos usando la cláusula INSERT IGNORE, MySQL proporciona una advertencia.

Como puede ver en el resultado a continuación, solo tenemos dos registros en esta tabla, la primera lista de valores proporcionada en la consulta anterior, que se pasa por alto.

>>SELECCIONE*FROM data.minister;

Conclusión:

Hemos realizado todos los ejemplos necesarios de INSERT IGNORE en valores duplicados a través de MySQL Workbench y la línea de comandos del cliente de MySQL.