Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit eindeutigen Schlüsseleinschränkungen beim Einfügen oder Aktualisieren in MySQL um?

Wie gehe ich mit eindeutigen Schlüsseleinschränkungen beim Einfügen oder Aktualisieren in MySQL um?

DDD
DDDOriginal
2025-01-24 02:52:09835Durchsuche

How to Handle Unique Key Constraints When Inserting or Updating in MySQL?

Einfügen oder Aktualisieren mithilfe eindeutiger Schlüsseleinschränkungen in MySQL

Das Einfügen oder Aktualisieren von Zeilen in eine MySQL-Tabelle kann schwierig sein, wenn Sie mit doppelten Schlüsseleinschränkungen umgehen müssen. Um dieses Problem zu lösen, stellt MySQL die vielseitige Anweisung „INSERT ... ON DUPLICATE KEY UPDATE“ zur Verfügung.

Wie in der Frage angegeben, möchten Sie eine Zeile mit einem eindeutigen Schlüssel in eine Tabelle einfügen. Wenn jedoch bereits eine Zeile mit demselben eindeutigen Schlüssel vorhanden ist, möchten Sie ihren Wert aktualisieren.

Traditionell würde das Einfügen einer Zeile gegen eine Eindeutigkeitsschlüsselbeschränkung verstoßen, was zu einer Fehlermeldung führen würde. „INSERT IGNORE“ unterdrückt Fehler, führt jedoch keinen Aktualisierungsvorgang durch.

Lösung: INSERT ... ON DUPLICATE KEY UPDATE

Die Lösung liegt in der Verwendung der Syntax „INSERT ... ON DUPLICATE KEY UPDATE“. Lassen Sie uns diese Abfrage anhand des bereitgestellten Beispiels aufschlüsseln:

<code class="language-sql">INSERT INTO table_name (ID, NAME, AGE) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE
NAME="A", AGE=19</code>
  • INSERT INTO: Wenn keine doppelten Schlüssel vorhanden sind, wird eine neue Zeile in die angegebene Tabelle („table_name“) eingefügt.
  • (ID, NAME, AGE): Gibt die Spalten an, die in der neuen Zeile gefüllt werden sollen.
  • VALUES(1, „A“, 19): Stellt die einzufügenden Werte bereit.
  • ZUM DOPPELTEN SCHLÜSSEL-UPDATE:Schlüsselteil. Wenn in der Tabelle bereits eine Zeile mit demselben Wert für den eindeutigen Schlüssel (in diesem Fall „ID“) vorhanden ist, wird der Aktualisierungsvorgang ausgelöst.
  • NAME="A", AGE=19: Gibt das zu aktualisierende Feld und seinen neuen Wert an.

Anleitung:

Wenn die Zeile mit der ID=1 nicht in der Tabelle vorhanden ist, wird eine neue Zeile mit dem angegebenen Wert eingefügt. Wenn jedoch bereits eine Zeile mit der ID=1 vorhanden ist, werden nur die Spalten „NAME“ und „AGE“ mit den angegebenen Werten aktualisiert und die „ID“ bleibt unverändert.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit eindeutigen Schlüsseleinschränkungen beim Einfügen oder Aktualisieren in MySQL um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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