MySQLs ON DUPLICATE KEY UPDATE
: Effiziente Handhabung gleichzeitiger mehrzeiliger Einfügungen und Aktualisierungen
Beim Einfügen mehrerer Zeilen in eine MySQL-Tabelle kommt es zu Situationen, in denen Sie prüfen müssen, ob ein eindeutiger Schlüssel vorhanden ist (der sich vom Primärschlüssel unterscheidet), bevor Sie vorhandene Datensätze aktualisieren. Die ON DUPLICATE KEY UPDATE
-Klausel bietet eine elegante Lösung.
MySQL 8.0.19 und spätere Versionen bieten eine verbesserte Syntax mit Aliasnamen für eingefügte Zeilen. Dies ermöglicht sauberere und besser lesbare Updates:
<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) AS new ON DUPLICATE KEY UPDATE age = new.age ...</code>
Für MySQL-Versionen vor 8.0.19 (beachten Sie, dass die VALUES
-Methode ab 8.0.20 veraltet ist) war der folgende Ansatz erforderlich:
<code class="language-sql">INSERT INTO beautiful (name, age) VALUES ('Helen', 24), ('Katrina', 21), ('Samia', 22), ('Hui Ling', 25), ('Yumie', 29) ON DUPLICATE KEY UPDATE age = VALUES(age), ...</code>
Wenn in beiden Beispielen beim Einfügen ein eindeutiger Schlüsselkonflikt auftritt, wird die betroffene Zeile mit den bereitgestellten Werten aktualisiert. Andernfalls wird eine neue Zeile hinzugefügt.
Es ist wichtig, sich daran zu erinnern, dass VALUES
innerhalb von ON DUPLICATE KEY UPDATE
nicht auf den Wert der vorhandenen Zeile verweist, sondern auf den entsprechenden Spaltenwert aus der versuchten neuen Zeileneinfügung.
Das obige ist der detaillierte Inhalt vonWie kann MySQLs ON DUPLICATE KEY UPDATE gleichzeitige Einfügungen und Aktualisierungen mehrerer Zeilen verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!