Heim > Datenbank > MySQL-Tutorial > Wie kann ich Zeilen basierend auf einem zusammengesetzten Schlüssel in MySQL effizient einfügen oder aktualisieren?

Wie kann ich Zeilen basierend auf einem zusammengesetzten Schlüssel in MySQL effizient einfügen oder aktualisieren?

Patricia Arquette
Freigeben: 2024-12-29 18:36:11
Original
376 Leute haben es durchsucht

How Can I Efficiently Insert or Update Rows Based on a Composite Key in MySQL?

INSERT INTO oder UPDATE mit doppelter Bedingung

Stellen Sie sich eine Tabelle vor, die Daten für mehrere Entitäten verfolgt, die durch Namen und Datum identifiziert werden. Jeden Tag werden neue Zeilen mit zukünftigen Daten für eine endliche Liste von Namenswerten generiert. Das Ziel besteht darin, eine neue Zeile einzufügen, wenn sie nicht vorhanden ist, oder die vorhandene Zeile zu aktualisieren, wenn dies der Fall ist.

Eine gängige Lösung könnte eine gespeicherte Prozedur sein, die die Bedingung prüft, aber das ist aufgrund von nicht durchführbar Die Daten werden aus einer anderen Sprache übertragen.

Lösung: BEI DUPLICATE KEY UPDATE EINFÜGEN

Die MySQL-Funktion INSERT ON DUPLICATE KEY UPDATE bietet eine elegante Lösung für dieses Problem. Es ermöglicht Ihnen, eine neue Zeile einzufügen, wenn diese nicht vorhanden ist, oder eine vorhandene Zeile zu aktualisieren, wenn dies der Fall ist, basierend auf einem eindeutigen Schlüssel oder Index.

In diesem Fall wird ein zusammengesetzter eindeutiger Schlüssel für (Name, Termine) würden ausreichen. Wenn eine Einfügung versucht wird, erkennt MySQL den Konflikt aufgrund dieses eindeutigen Schlüssels und führt stattdessen die Aktualisierung durch.

Beispiel:

CREATE TABLE myThing (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name INT NOT NULL,
    values1 INT NOT NULL,
    values2 INT NOT NULL,
    dates DATE NOT NULL,
    UNIQUE KEY (name, dates)
);

INSERT INTO myThing (name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11')
ON DUPLICATE KEY UPDATE values2 = values2 + 1;
Nach dem Login kopieren

Durch die Durchführung mehrerer Einfügungen mit Wenn Sie dieselben Werte (Name, Datum) verwenden, können Sie die Spalte „values2“ aktualisieren entsprechend:

INSERT INTO myThing (name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11')
ON DUPLICATE KEY UPDATE values2 = values2 + 1;

INSERT INTO myThing (name, values1, values2, dates) VALUES (777, 1, 1, '2015-07-11')
ON DUPLICATE KEY UPDATE values2 = values2 + 1;
Nach dem Login kopieren

Ergebnis:

SELECT *
FROM myThing;

+----+------+---------+---------+------------+
| id | name | values1 | values2 | dates      |
+----+------+---------+---------+------------+
| 1  | 777  | 1       | 3       | 2015-07-11 |
+----+------+---------+---------+------------+
Nach dem Login kopieren

Wie Sie sehen können, aktualisiert die INSERT ON DUPLICATE KEY UPDATE-Klausel effektiv die Spalte „values2“ für die vorhandene Zeile.

Das obige ist der detaillierte Inhalt vonWie kann ich Zeilen basierend auf einem zusammengesetzten Schlüssel in MySQL effizient einfügen oder aktualisieren?. 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