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.
La sintaxis es muy parecida a INSERT INTO:
INSERT IGNORE INTO tabla(columna1, columna2) VALUES (valor1, valor2);
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.
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.
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í:
CREATE TABLE IF NOT EXISTS mascotas(
nombre VARCHAR(255) NOT NULL UNIQUE, # Lo marcamos como unique
edad TINYINT NOT NULL
);
Ahora insertamos algunos datos…
INSERT INTO mascotas(nombre, edad) VALUES("Maggie", 2), ("Coqueta", 5), ("Cuco", 3);
Por lo que hasta ahora debemos tener estos registros:
Ahora, vamos a insertar (sin ignore) un valor repetido…
INSERT INTO mascotas(nombre, edad) VALUES ("Cuco", 5);
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:
En cambio ahora veamos cómo se hace con ignore. Cambiando la consulta así:
INSERT IGNORE INTO mascotas(nombre, edad) VALUES ("Cuco", 5);
Ahora no marca error, simplemente un aviso:
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
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.