Wenn beim Einfügen von Daten in MySQL die eingefügten Daten bereits in der Tabelle vorhanden sind (der Primärschlüssel oder der eindeutige Schlüssel bereits vorhanden ist), verwenden Sie die Insert-Ignorier-Syntax, um das Einfügen doppelter Daten zu ignorieren.
1. Fügen Sie die Ignoriersyntax ein
insert ignore into table_name values…
Wenn beim Einfügen von Daten mithilfe der Syntax „Einfügen ignorieren“ ein Primärschlüssel- oder eindeutiger Schlüsselkonflikt auftritt, werden die eingefügten Daten ignoriert.
Erfüllen Sie eine der folgenden Bedingungen:
Primärschlüssel duplizieren.
Eindeutigen Schlüssel duplizieren
. 2. Groß-/Kleinschreibung einfügen.
Sehen Sie sich zunächst eine Tabelle, Tabellenname, Primärschlüssel-ID und einen eindeutigen Schlüsselnamen an. Die spezifische Tabellenstruktur und die Daten in der Tabelle lauten wie folgt:
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 Primärschlüsselkonflikt
Fügen Sie einen Datensatz mit der ID 1 ein. Wenn „Ignorieren“ nicht hinzugefügt wird, wird ein Primärschlüsselkonfliktfehler wie folgt gemeldet:
mysql> insert into table_name values(1,’Bill’, 21);
ERROR 1062 (23000): Duplicate entry ‘1’ for key ‘PRIMARY’
Nach dem Hinzufügen von „Ignorieren“ wird kein Fehler gemeldet, es wird jedoch eine Warnung wie folgt angezeigt:
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’ |
+———+——+—————————————+
Fragen Sie die Tabelle ab und stellen Sie fest, dass die eingefügten Daten ignoriert wurden.
mysql> select * from table_name;
+—-+——+——+
| id | name | age |
+—-+——+——+
| 1 | Tom | 20 |
+—-+——+——+
2.2 Konflikte mit eindeutigen Schlüsseln
Ebenso wird das Einfügen von Daten mit Konflikten mit eindeutigen Schlüsseln ebenfalls ignoriert, wie unten gezeigt:
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)
Wenn die Geschäftslogik doppelte Daten beim Einfügen automatisch ignorieren muss, können Sie es auch mit der MySQL-Funktion zum Ignorieren von Einfügungen versuchen.