Heim >Datenbank >MySQL-Tutorial >MySQL-Einfügung oder -Aktualisierung: Wie gehe ich effizient mit eindeutigen Nicht-Primärschlüsselspalten um?
MySql-Einfügung oder Aktualisierung basierend auf einer eindeutigen Bedingung
Das Einfügen von Daten in eine MySQL-Tabelle erfordert häufig die Überprüfung, ob die Daten bereits vorhanden sind, bevor eine Aktualisierung durchgeführt wird . Beim Umgang mit eindeutigen Nicht-Primärschlüsselspalten greift die herkömmliche UPDATE-Anweisung jedoch zu kurz.
In diesem Fall sucht der Benutzer nach einer effizienten Methode, um Daten in eine AggregatedData-Tabelle einzufügen, wenn die Datenum-Spalte nicht vorhanden ist , oder aktualisieren Sie gegebenenfalls die vorhandene Zeile.
Lösung: INSERT ... ON DUPLICATE KEY UPDATE
Wie von Jai vorgeschlagen, besteht die am besten geeignete Lösung darin, die Syntax INSERT ... ON DUPLICATE KEY UPDATE zu verwenden:
INSERT INTO AggregatedData (datenum,Timestamp) VALUES ("734152.979166667","2010-01-14 23:30:00.000") ON DUPLICATE KEY UPDATE Timestamp=VALUES(Timestamp)
Diese Anweisung führt eine Einfügung durch, wenn das Datum wird nicht gefunden. Wenn es vorhanden ist, aktualisiert es die Zeitstempelspalte mit dem in der Funktion VALUES() bereitgestellten Wert.
Erklärung
Die Funktion VALUES() stellt sicher, dass die für die Aktualisierung verwendeten Werte mit denen übereinstimmen, die in der INSERT-Anweisung angegeben sind. Dies verhindert versehentliche Aktualisierungen von Spaltenwerten.
Vorteile von INSERT ... ON DUPLICATE KEY UPDATE
Das obige ist der detaillierte Inhalt vonMySQL-Einfügung oder -Aktualisierung: Wie gehe ich effizient mit eindeutigen Nicht-Primärschlüsselspalten um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!