Wenn Sie ON DUPLICATE KEY UPDATE angeben
          und ein Datensatz eingefügt wird, der einen doppelten Wert in
          einem eindeutigen Index oder einem Primärschlüssel erzeugen
          würde, dann wird für den alten Datensatz
          UPDATE ausgeführt. Angenommen, die Spalte
          a wird als UNIQUE
          deklariert und enthält den Wert 1; in
          diesem Fall hätten die beiden folgenden Anweisungen dieselbe
          Wirkung:
        
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;
Der Wert der betroffenen Datensätze ist 1, wenn der Datensatz als neuer Datensatz eingefügt wird, und 2, wenn ein vorhandener Eintrag aktualisiert wird.
          Wenn die Spalte b ebenfalls eindeutig ist,
          ist die INSERT-Anweisung stattdessen
          gleichbedeutend mit der folgenden
          UPDATE-Anweisung:
        
UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
          Wenn a=1 OR b=2 mehreren Datensätzen
          entspricht, wird nur ein Datensatz
          aktualisiert. Generell sollten Sie von der Verwendung einer
          ON DUPLICATE KEY-Klausel bei Tabellen mit
          mehreren eindeutigen Indizes absehen.
        
          Sie können die Funktion
          VALUES(
          in der col_name)UPDATE-Klausel verwenden, um
          Spaltenwerte aus dem INSERT-Teil der
          INSERT ... UPDATE-Anweisung zu
          referenzieren. Anders gesagt, verweist
          VALUES(
          in der col_name)UPDATE-Klausel auf den Wert von
          col_name, der eingefügt worden
          wäre, wäre nicht ein Konflikt aufgrund einer
          Schlüsseldublette aufgetreten. Diese Funktion ist
          insbesondere bei Einfügevorgängen für mehrere Datensätze
          praktisch. Die Funktion VALUES() ist nur in
          INSERT ... UPDATE-Anweisungen sinnvoll zu
          verwenden; andernfalls gibt sie NULL
          zurück. Beispiel:
        
INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);
Diese Anweisung ist identisch mit den folgenden beiden Anweisungen:
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3; INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=9;
          Die Option DELAYED wird ignoriert, wenn Sie
          ON DUPLICATE KEY UPDATE verwenden.
        
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

