Heim >Datenbank >MySQL-Tutorial >Wie behandelt MySQLs INSERT ... ON DUPLICATE KEY UPDATE Upsert-Vorgänge?

Wie behandelt MySQLs INSERT ... ON DUPLICATE KEY UPDATE Upsert-Vorgänge?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-21 11:41:10816Durchsuche

How Does MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Upsert Operations?

Effiziente Upsert-Operation von MySQL: Verwenden Sie INSERT ... ON DUPLICATE KEY UPDATE

Bei der MySQL-Datenbankverwaltung ist es häufig erforderlich, neue Zeilen einzufügen oder vorhandene Zeilen zu aktualisieren, je nachdem, ob die Daten vorhanden sind. Dies wird als „Upsert“-Vorgang (Einfügen oder Aktualisieren) bezeichnet.

MySQL stellt die INSERT ... ON DUPLICATE KEY UPDATE-Syntax zur effizienten Implementierung der Upsert-Funktion bereit. So funktioniert es:

<code class="language-sql">INSERT INTO `table_name`
(`column1`, `column2`, ...)
VALUES
(value1, value2, ...)
ON DUPLICATE KEY UPDATE
`column1` = value1_updated,
`column2` = value2_updated,
...</code>
Die

INSERT-Klausel gibt den Wert an, der in die Tabelle eingefügt werden soll. Die ON DUPLICATE KEY UPDATE-Klausel definiert, was zu tun ist, wenn in der Tabelle bereits eine Zeile mit demselben Primärschlüssel (oder eindeutigen Index) vorhanden ist.

Betrachten Sie beispielsweise die folgende Tabelle:

<code class="language-sql">CREATE TABLE `usage` (
    `thing_id` INT NOT NULL PRIMARY KEY,
    `times_used` INT DEFAULT 0,
    `first_time_used` TIMESTAMP
);</code>

Wenn Sie neue Daten für die Zeile thing_id für 4815162342 einfügen möchten, die Spalte times_used um 1 erhöhen und first_time_used auf den aktuellen Zeitstempel setzen möchten, können Sie die folgende Upsert-Abfrage verwenden:

<code class="language-sql">INSERT INTO `usage`
(`thing_id`, `times_used`, `first_time_used`)
VALUES
(4815162342, 1, NOW())
ON DUPLICATE KEY UPDATE
`times_used` = `times_used` + 1</code>

Wenn bereits eine Zeile mit thing_id für 4815162342 vorhanden ist, aktualisiert die Abfrage die Spalte times_used, während first_time_used unverändert bleibt. Andernfalls wird eine neue Zeile eingefügt.

INSERT ... ON DUPLICATE KEY UPDATE ist eine flexible und effiziente Technologie zur Durchführung von Upsert-Vorgängen in MySQL. Es ermöglicht Ihnen, Einfüge- und Aktualisierungsvorgänge mit einer einzigen Abfrage durchzuführen, wodurch Ihr Code vereinfacht und die Leistung verbessert wird.

Das obige ist der detaillierte Inhalt vonWie behandelt MySQLs INSERT ... ON DUPLICATE KEY UPDATE Upsert-Vorgänge?. 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