Heim > Datenbank > MySQL-Tutorial > Kann MySQL Zeilen ohne Fehler einfügen, wenn eindeutige Schlüsselkonflikte auftreten?

Kann MySQL Zeilen ohne Fehler einfügen, wenn eindeutige Schlüsselkonflikte auftreten?

Barbara Streisand
Freigeben: 2025-01-04 08:55:35
Original
510 Leute haben es durchsucht

Can MySQL Insert Rows Without Errors When Unique Key Conflicts Occur?

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');
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage