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:
Tags :
Vous pouvez laisser un message, ou un trackback / retrolien depuis votre site











1 comment aire
Je tiens à preciser que il fait que la station (dans l’exemple, ici ‘Nancy’) doit etre unique!
Sinon il ne fera qu’ajouter si un paramettre change!
Ca peut parraitre bete mais l’etant moi meme et apres une journée à essayer de comprendre, je prefere le signaler
November 8th, 2007 at 15:15
Laisser un commentaire