Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Einfügefehler ignorieren:doppelter Eintrag

Sie können INSERT... IGNORE verwenden Syntax, wenn Sie bei einem doppelten Datensatz nichts unternehmen möchten.

Sie können REPLACE INTO verwenden Syntax, wenn Sie einen alten Datensatz mit einem neuen mit demselben Schlüssel überschreiben möchten.

Oder Sie können INSERT... ON DUPLICATE verwenden KEY-UPDATE Syntax, wenn Sie stattdessen eine Aktualisierung des Datensatzes durchführen möchten, wenn Sie auf ein Duplikat stoßen.

Edit:Dachte, ich würde ein paar Beispiele hinzufügen.

Beispiele

Angenommen, Sie haben eine Tabelle namens tbl mit zwei Spalten, id und value . Es gibt einen Eintrag, id=1 und value=1. Wenn Sie die folgenden Anweisungen ausführen:

REPLACE INTO tbl VALUES(1,50);

Sie haben noch einen Datensatz mit ID=1 Wert=50. Beachten Sie jedoch, dass der gesamte Datensatz zuerst GELÖSCHT und dann wieder eingefügt wurde. Dann:

INSERT IGNORE INTO tbl VALUES (1,10);

Die Operation wird erfolgreich ausgeführt, aber es wird nichts eingefügt. Sie haben immer noch id=1 und value=50. Zum Schluss:

INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

Sie haben jetzt einen einzelnen Datensatz mit der ID=1 und dem Wert=200.