MySQL - Updates mit ON DUPLICATE
23.04.2009 15:32
Daten aktualisieren
Seit der Version 4.1 kennt MySQL die Erweiterung ON DUPLICATE KEY für den Befehl INSERT. Die führt statt des Einfügens eine UPDATE-Operationen durch, falls bereits ein Satz mit dem identischen Primärschlüssel existiert. Ein Beispiel für die Anwendung: Sie möchten sich für Ihre Website eine Tabelle anlegen, die die Zugriffszahlen auf Basis von IP-Adressen speichert. Die Struktur der Tabelle wird in etwa so aussehen:
CREATE TABLE zugriffe ( ip VARCHAR(15) NOT NULL PRIMARY KEY, zaehler INT UNSIGNED NOT NULL, lzugriff DATETIME );
Um einen neuen Zugriff zu vermerken, würde man mit den normalen SQL-Befehlen zuerst eine Abfrage starten, die das Vorhandensein der IP-Adresse prüft und dann je nach ihrem Ergebnis die Daten per UPDATE aktualisieren oder mittels INSERT neu eintragen. Mit dem praktischen Befehlszusatz dagegen genügt ein MySQL-Befehl:
INSERT INTO zugriffe VALUES ('192.168.0.1', 1, now( ))
ON DUPLICATE KEY UPDATE zaehler = zaehler +1,lzugriff = now( );
Für den Fall, dass die IP-Adresse 192.168.0.1 bereits in der Tabelle eingetragen ist, wird also der Zähler um eins erhöht und das Feld, das den letzten Zugriff speichert, aktualisiert.
(Martin Goldmann/Natascha Maslo/am)
