Al insertar datos en MySQL, si los datos insertados ya existen en la tabla (la clave principal o la clave única ya existen), use la sintaxis de ignorar inserción para ignorar la inserción de datos duplicados.
1. insertar ignorar sintaxis
insert ignore into table_name values…
Cuando se utiliza la sintaxis de insertar omitir para insertar datos, si se produce un conflicto de clave principal o de clave única, se ignorarán los datos insertados.
Se cumple una de las siguientes condiciones:
- clave principal duplicada
- Clave única duplicada
2. Insertar caso de ignorar
Primero mire una tabla, el nombre de la tabla table_name, la identificación de la clave principal, el nombre de la clave única, la estructura específica de la tabla y los datos en la tabla son los siguientes:
CREATE TABLE table_name(
id int(11) NOT NULL,
name varchar(50) DEFAULT NULL,
age int(11) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
mysql> select * from table_name;
+----+------+------+
| id | name | age |
+----+------+------+
| 1 | Tom | 20 |
+----+------+------+
2.1 Conflicto de clave principal
Inserte un registro con una identificación de 1. Si no se agrega ignorar, se informará un error de conflicto de clave principal, de la siguiente manera:
mysql> insert into table_name values(1,’Bill’, 21);
ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’
Después de agregar ignorar, no se informará ningún error, pero hay una advertencia de advertencia, de la siguiente manera:
mysql> insert ignore into table_name values(1,’Bill’, 21);
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show warnings;
+———+——+—————————————+
| Level | Code | Message |
+———+——+—————————————+
| Warning | 1062 | Duplicate entry ‘1’ for key ‘PRIMARY’ |
+———+——+—————————————+
Consulte la tabla y descubra que los datos insertados se ignoran.
mysql> select * from table_name;
+—-+——+——+
| id | name | age |
+—-+——+——+
| 1 | Tom | 20 |
+—-+——+——+
2.2 Conflictos de clave única
Asimismo, se ignora la inserción de datos con infracciones de clave única, de la siguiente manera:
mysql> insert into table_name values(2,’Tom’,21);
ERROR 1062 (23000): Duplicate entry ‘Tom’ for key ‘uk_name’
mysql> insert ignore into table_name values(2,’Tom’,21);
Query OK, 0 rows affected, 1 warning (0.00 sec)
Si la lógica empresarial necesita ignorar automáticamente al insertar datos duplicados, pruebe la función de ignorar inserción de MySQL.