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)
datenbanken
Registriere dich
Wenn Du deinen Benutzernamen in Besitz nehmen möchtest, solltest Du dich registrieren:
Benutzername
Passwort
Passwort wiederholen
E-Mail
databasepro
databasepro berichtet alle zwei Monate praxisnah über die Themen, die professionelle Datenbank-Architekten, -Administratoren, Consultants, Anwender und IT-Manager, die sich mit der Auswahl von Technologien, Plattformen, Datenbanken und Entwicklungsumgebungen beschäftigen, Tag für Tag brauchen.