Zeilen ohne Duplizierung einfügen: „INSERT ... ON DUPLICATE KEY (nichts tun)“ verstehen
Frage:
Kann MySQL einen Einfügevorgang ausführen, ohne einen Fehler zu generieren, wenn ein eindeutiger Schlüsselkonflikt vorliegt? auftritt?
Gibt es konkret eine Möglichkeit, mit der INSERT-Anweisung eine Zeile nur dann in eine Tabelle einzufügen, wenn der Primärschlüssel noch nicht vorhanden ist?
Antwort:
MySQL bietet zwei Methoden zur Behandlung doppelter Schlüsselkonflikte während eines INSERT Bedienung:
1. EINFÜGEN ... BEI DUPLICATE KEY UPDATE
Mit dieser Syntax können Sie eine zusätzliche Aktion angeben, die ausgeführt werden soll, wenn der Einfügevorgang zu einer Verletzung des doppelten Schlüssels führen würde. Sie könnten beispielsweise eine vorhandene Zeile mit den Werten aus der neuen Zeile aktualisieren.
Es gibt jedoch keine spezielle Option „NICHT TUN“ mit der Klausel ON DUPLICATE KEY UPDATE.
2. INSERT ... ON DUPLICATE KEY UPDATE>
Alternativ können Sie diese Syntax verwenden, um den Konflikt mit doppelten Schlüsseln im Wesentlichen zu ignorieren. In diesem Fall wird die ID-Spalte sich selbst zugewiesen, was keine Aktualisierungen auslöst.
3. INSERT IGNORE
Wenn Sie keine strenge Fehlerbehandlung benötigen und sich keine Sorgen über mögliche Probleme mit automatisch inkrementierten Feldern oder Fremdschlüsseleinschränkungen machen, können Sie die INSERT IGNORE-Anweisung verwenden. Diese Syntax überspringt den Einfügevorgang, wenn ein doppelter Schlüssel gefunden wird.
Beispiel:
Berücksichtigen Sie die in der Frage erwähnte Tabelle „user_permanent_gift“. Um eine Zeile in diese Tabelle einzufügen, ohne dass bei doppelten Schlüsseln ein Fehler generiert wird, können Sie die folgende Anweisung verwenden:
INSERT IGNORE INTO user_permanent_gift (fb_user_id, gift_id, purchase_timestamp) VALUES (123, 456, '2022-03-15 12:00:00');
Diese Anweisung versucht, die Zeile einzufügen, wenn jedoch die Kombination aus fb_user_id und gift_id bereits in der Tabelle vorhanden ist, wird das Einfügen übersprungen, ohne dass ein Fehler generiert wird.
Das obige ist der detaillierte Inhalt vonKann MySQL Zeilen ohne Fehler einfügen, wenn eindeutige Schlüsselkonflikte auftreten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!