Mysql
 sql >> Base de données >  >> RDS >> Mysql

Ajouter à un champ de base de données au lieu de l'écraser (fonction MySQL UPDATE)

Essayez d'utiliser INSERT ... ON DUPLICATE KEY UPDATE

Si vous spécifiez ON DUPLICATE KEY UPDATE et qu'une ligne est insérée, ce qui entraînerait une valeur en double dans un index UNIQUE ou PRIMARY KEY, MySQL effectue une mise à jour de l'ancienne ligne.

Par exemple, si la colonne a est déclarée UNIQUE et contient la valeur 1, les deux instructions suivantes ont un effet similaire :

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;

(Les effets ne sont pas identiques pour une table où a est une colonne auto-incrémentée. Avec une colonne auto-incrémentée, un INSERT l'instruction augmente la valeur d'auto-incrémentation mais UPDATE pas.)

La clause ON DUPLICATE KEY UPDATE peut contenir plusieurs affectations de colonnes, séparées par des virgules.

Avec ON DUPLICATE KEY UPDATE, la valeur des lignes affectées par ligne est 1 si la ligne est insérée en tant que nouvelle ligne et 2 si une ligne existante est mise à jour.

J'espère que cela vous aidera.