Heim > Datenbank > MySQL-Tutorial > Wie kann MySQLs INSERT ... ON DUPLICATE KEY UPDATE mit bedingten Einfügungen und Aktualisierungen umgehen?

Wie kann MySQLs INSERT ... ON DUPLICATE KEY UPDATE mit bedingten Einfügungen und Aktualisierungen umgehen?

Barbara Streisand
Freigeben: 2024-12-13 15:07:10
Original
185 Leute haben es durchsucht

How Can MySQL's INSERT ... ON DUPLICATE KEY UPDATE Handle Conditional Inserts and Updates?

Verwaltung von Duplikaten mit bedingten Einfügungen und Aktualisierungen in MySQL

Bei der Arbeit mit Datenbanken ist es oft notwendig, sich mit Situationen auseinanderzusetzen, in denen Datensätze mit demselben eindeutigen Wert erforderlich sein könnten entweder eingefügt oder aktualisiert werden. MySQL bietet durch seine INSERT ... ON DUPLICATE KEY UPDATE-Syntax eine praktische Lösung für dieses Szenario.

Betrachten Sie die in der Frage beschriebene Situation. Ein Benutzer möchte neue Daten in die AggregatedData-Tabelle einfügen. Sie möchten jedoch, dass diese Daten nur eingefügt werden, wenn das Datenfeld nicht bereits in der Tabelle vorhanden ist. Wenn es existiert, möchten sie das Zeitstempelfeld mit dem neuen Wert aktualisieren.

Der ursprüngliche Ansatz des Benutzers umfasste eine UPDATE-Anweisung:

UPDATE AggregatedData SET datenum="734152.979166667", Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";
Nach dem Login kopieren

Während diese Anweisung funktionieren würde, wenn Der Datenwert ist bereits vorhanden. Es würde fehlschlagen, wenn der Wert nicht in der Tabelle vorhanden wäre. Um diese Situation effektiv zu bewältigen, kommt INSERT ... ON DUPLICATE KEY UPDATE ins Spiel.

Die korrekte Syntax für diesen Vorgang lautet:

INSERT INTO AggregatedData (datenum, Timestamp)
VALUES ("734152.979166667", "2010-01-14 23:30:00.000")
ON DUPLICATE KEY UPDATE 
  Timestamp=VALUES(Timestamp)
Nach dem Login kopieren

In dieser Anweisung:

  • Der INSERT ...-Teil versucht, eine neue Zeile mit den angegebenen Daten in die Tabelle einzufügen.
  • Der ON DUPLICATE Der Teil „KEY UPDATE ...“ gibt an, was zu tun ist, wenn bereits eine Zeile mit demselben Datenwert vorhanden ist. In diesem Fall aktualisiert es das Zeitstempelfeld mit dem in der VALUES(Timestamp)-Klausel bereitgestellten Wert.

Mit diesem Ansatz kann der Benutzer sicherstellen, dass neue Daten eingefügt werden, wenn das Datum eindeutig ist, und dass vorhandene Daten aktualisiert werden, wenn es sich bei dem Datenum um ein Duplikat handelt. Das Datenfeld muss nicht in die UPDATE-Klausel aufgenommen werden, da es nicht geändert werden kann.

Das obige ist der detaillierte Inhalt vonWie kann MySQLs INSERT ... ON DUPLICATE KEY UPDATE mit bedingten Einfügungen und Aktualisierungen umgehen?. 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