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";
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)
In dieser Anweisung:
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!