Une problématique régulière sur un site consiste à mettre a jour des données. Parfois la donnée existe déjà et parfois elle n’existe pas.
Vous pouvez utiliser REPLACE mais le REPLACE est simplement un DELETE suivi d’un INSERT.
Exemple :
Je recois régulièrement les données d’une station météo. Parfois je recois la température, d’autre fois je recois l’humidité…si j’utilise REPLACE quand je mets à jour la température, je vais perdre l’humidité de la station X (X etant ma clé primaire, ma table comporte une ligne par station)
Deux méthodes sont possible :
- Je fais un SELECT pour savoir si la station a déjà des données et ensuite je fais soit un INSERT soir un UPDATE.
- J’utilise ON DUPLICATE KEY : INSERT INTO donnee_station SET temperature=15, station=’Nancy’ ON DUPLICATE KEY UPDATE temperature=15;
L’avantage de la deuxième méthode : cela réduit le code et je ne fais qu’une requete (meme si au niveau du serveur il en execute 2 :il essaye de faire INSERT si il recoit l’erreur Duplicate key Entry il fait UPDATE)
En résumé c’est plus facile est plus propre.
References:
