Heim > Artikel > Backend-Entwicklung > Wie gehe ich mit doppelten Einträgen beim Einfügen von Daten in MySQL um?
Beim Einfügen von Datensätzen in eine Datenbank, die eindeutige Felder enthält, kommt es häufig zu doppelten Einträgen Fehler. Diese Fehler können Batch-Einfügungsvorgänge unterbrechen, bei denen nur die neuen Datensätze eingefügt werden sollten.
MySQL bietet die INSERT...IGNORE-Syntax, Dadurch können Einfügungen fortgesetzt werden, ohne dass ein Fehler generiert wird, wenn ein doppelter Eintrag auftritt. Zum Beispiel:
INSERT IGNORE INTO tbl (id, name) VALUES (1, 'John Doe');
Wenn bereits ein Eintrag mit der ID=1 vorhanden ist, wird die Anweisung erfolgreich ausgeführt, ohne dass eine neue Zeile eingefügt wird.
Die REPLACE INTO-Syntax überschreibt einen vorhandenen Datensatz mit einem neuen, der denselben Primärschlüssel hat. Dies kann nützlich sein, wenn Sie sicherstellen möchten, dass die neuesten Daten in der Tabelle gespeichert sind:
REPLACE INTO tbl (id, name) VALUES (1, 'Jane Doe');
Wenn in diesem Fall id=1 vorhanden ist, wird der alte Datensatz gelöscht und der neue gelöscht eingefügt.
Mit der Syntax INSERT...ON DUPLICATE KEY UPDATE können Sie eine Aktion angeben, die bei einem doppelten Eintrag ausgeführt werden soll angetroffen wird. Sie können beispielsweise den vorhandenen Datensatz aktualisieren:
INSERT INTO tbl (id, name) VALUES (1, 'Alice Smith') ON DUPLICATE KEY UPDATE name = 'Alice Smith';
Wenn id=1 vorhanden ist, wird der Name des vorhandenen Datensatzes in „Alice Smith“ aktualisiert.
Betrachten Sie eine Tabelle namens tbl mit den Spalten id und value, die eine Zeile enthält: (1, 1).
REPLACE:
REPLACE INTO tbl VALUES (1, 50);
Ergebnis: (1, 50) (ersetzt den vorhandenen Datensatz)
INSERT IGNORE:
INSERT IGNORE INTO tbl VALUES (1, 10);
Ergebnis: Keine Änderung (ignoriert den doppelten Eintrag)
INSERT WITH ON DUPLICATE KEY UPDATE:
INSERT INTO tbl VALUES (1, 200) ON DUPLICATE KEY UPDATE value = 200;
Ergebnis: (1 , 200) (aktualisiert den vorhandenen Datensatz)
Das obige ist der detaillierte Inhalt vonWie gehe ich mit doppelten Einträgen beim Einfügen von Daten in MySQL um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!