Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ein Datenbankfeld ergänzen, statt es zu überschreiben (MySQL UPDATE-Funktion)

Versuchen Sie, INSERT ... ON DUPLICATE KEY UPDATE zu verwenden

Wenn Sie ON DUPLICATE KEY UPDATE angeben und eine Zeile eingefügt wird, die zu einem doppelten Wert in einem UNIQUE-Index oder PRIMARY KEY führen würde, führt MySQL ein UPDATE der alten Zeile durch.

Wenn beispielsweise Spalte a als UNIQUE deklariert ist und den Wert 1 enthält, haben die folgenden beiden Anweisungen eine ähnliche 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;

(Die Auswirkungen sind nicht identisch für eine Tabelle, in der a eine Auto-Increment-Spalte ist. Bei einer Auto-Increment-Spalte ist ein INSERT -Anweisung erhöht den Auto-Increment-Wert, aber UPDATE nicht.)

Die ON DUPLICATE KEY UPDATE-Klausel kann mehrere durch Kommas getrennte Spaltenzuweisungen enthalten.

Bei ON DUPLICATE KEY UPDATE beträgt der Wert der betroffenen Zeilen pro Zeile 1, wenn die Zeile als neue Zeile eingefügt wird, und 2, wenn eine vorhandene Zeile aktualisiert wird.

Hoffe, das wird helfen.