bases de datos

Insert ignore en MySQL: usos y explicación

Introducción

Hoy veremos cómo trabajar con insert ignore en MySQL. Veremos lo que pasa, en qué casos podemos usarlos, y otras cosas.

Recomiendo leer Replace into en MySQL.

Insert ignore en MySQL

Sintaxis

La sintaxis es muy parecida a INSERT INTO:

See the gist on github.

Diferencia

La gran diferencia es que si encuentra valores repetidos va a ignorarlos, previniendo un error de duplicidad.

¿y cuáles valores toma como repetidos? muy fácil, los valores que son marcados como índices o como valores únicos.

Usos

Podemos usarlo en aquellos lugares en donde necesitamos que una columna sea única pero al mismo tiempo necesitemos que se permitan valores duplicados (aunque realmente no se duplicarán, sólo los ignorará) y que en caso de que alguien introduzca el mismo valor no pase nada: ni errores ni duplicidades

Un caso de esto es en las etiquetas de un post. Podemos etiquetar con #MySQL, #SQL y otras etiquetas; mismas que serán guardadas en una base de datos.

Pero si más tarde un usuario viene y pone la misma etiqueta #SQL el motor lo ignorará si usamos INSERT IGNORE porque ya existe una fila en donde esa etiqueta tiene ese valor.

En cambio, sin insert ignore, se generaría un error de duplicidad.

Ejemplo

Vamos a crear una tabla de mascotas en donde no se podrá repetir el nombre. Es un poco tonto, porque en la vida real sí se repiten pero el punto es ilustrar.

El esquema queda así:

See the gist on github.

Ahora insertamos algunos datos…

See the gist on github.

Por lo que hasta ahora debemos tener estos registros:

Datos en tabla

Ahora, vamos a insertar (sin ignore) un valor repetido…

See the gist on github.

Aquí hay que prestar atención, y es que en este caso la edad es 5 (cosa diferente porque en la tabla, Cuco tiene 3 años); sin embargo MySQL ignorará ese valor porque no está marcado como único, se fijará en lo que tiene la columna nombre.

El punto es que marcará este error porque “Cuco” ya existe:

Error de duplicidad

En cambio ahora veamos cómo se hace con ignore. Cambiando la consulta así:

See the gist on github.

Ahora no marca error, simplemente un aviso:

Consulta con Insert ignore en MySQL

De este modo evitamos errores, aunque lo “malo” puede ser que la edad de Cuco seguirá siendo 3, porque aunque la insertamos con 5 todos los datos nuevos fueron ignorados.

Si quisiéramos que fueran en su lugar actualizados, utilizaríamos REPLACE INTO

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Compartir
Publicado por
parzibyte

Entradas recientes

Imprimir PDF con Bot de Telegram

La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…

3 días hace

Enviar mensaje con bot de Telegram usando JavaScript (lado del cliente)

Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…

4 días hace

PHP: incrustar imagen en base64

El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…

4 días hace

Plugin ESC POS – Actualización 3.4.0: imprimir HTML

El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…

5 días hace

JavaScript (lado del cliente): leer pixeles de imagen

En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…

2 semanas hace

PHP y JavaScript: llenar select con AJAX

Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…

2 semanas hace

Esta web usa cookies.